[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: По отдельности запросы выполняются, а вместе - нет
-=[.:NemesiS:.]=-
Есть 2 запроса:
CREATE TABLE `uri8y_ban_list`
( 
	`ban_id` mediumint(8) UNSIGNED NOT NULL auto_increment,
	`ban_type` VARCHAR(15) NOT NULL DEFAULT '',
	`ban_value` VARCHAR(15) NOT NULL DEFAULT '',
	`ban_reason` TEXT NOT NULL,
	PRIMARY KEY (`ban_id`)
);
 
CREATE TABLE `uri8y_blocks`
(
	`block_id` mediumint(8) UNSIGNED NOT NULL auto_increment,
	`block_position` VARCHAR(50) NOT NULL DEFAULT '',
	`block_title` VARCHAR(100) NOT NULL DEFAULT '',
	`block_show_title` BOOL,
	`block_type` VARCHAR(4) NOT NULL DEFAULT '',
	`block_content` LONGTEXT NOT NULL,
	`block_access` TINYINT(4) NOT NULL,
	`block_groups` LONGTEXT NOT NULL,
	`block_enabled` BOOL,
	`block_expire` BOOL,
	`block_expire_date` INT(11) NOT NULL,
	`block_expire_action` BOOL,
	PRIMARY KEY (`block_id`)
);

Если их выполнять вместе, то выдаёт ошибку, мол не правильно написано:
QUOTE
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '; CREATE TABLE `uri8y_blocks` ( `block_id` medium

А если выполнять по отдельности, то всё работает...
Может я что-то упустил?
Подскажите.



Спустя 23 минуты, 4 секунды (12.01.2007 - 14:37) Ghost написал(а):
а почему ты думаешь что они вместе должны выполняться?

Спустя 19 минут, 22 секунды (12.01.2007 - 14:56) -=[.:NemesiS:.]=- написал(а):
Потому, что должны.<br>А разве нет?<br>т.е. mysql_query("CREATE TABLE `name` (...); CREATE TABLE `name_2` (...);"); не правильно???<br>Вот всё полностью:<br>
// SQL класс 
class sql 
{ 
... 
// вот функция запроса: 
 
function query($query = '') 
{ 
  if($result = @mysql_query($query) return $result; 
  else  
  { 
    echo "Query fail. MySQL return: ".mysql_error(); 
   // ... 
   // запись в лог 
   // ... 
   return false; 
  } 
} 
... 
} 
// вот то, что я пытаюсь выполнить: 
$sql->query("оба запроса"); // ругается, что не могу использовать ; CREATE TABLE `uri8y_blocks` ( `block_id` medium, типа читай документацию 
echo "<hr>"; 
$sql->query("первый запрос"); // выполняет 
echo "<hr>"; 
$sql->query("второй запрос"); // выполняет
 
Не могу использовать запросы по отдельности, т.к. это фрагмент установщика cmsки и запросы вынесены в отдельный файл:
 
CREATE TABLE `{prefix}ban_list` 
(  
    `ban_id` mediumint(8) UNSIGNED NOT NULL auto_increment, 
    `ban_type` VARCHAR(15) NOT NULL DEFAULT '', 
    `ban_value` VARCHAR(15) NOT NULL DEFAULT '', 
    `ban_reason` TEXT NOT NULL, 
    PRIMARY KEY (`ban_id`) 
); 
 
CREATE TABLE `{prefix}blocks` 
( 
    `block_id` mediumint(8) UNSIGNED NOT NULL auto_increment, 
    `block_position` VARCHAR(50) NOT NULL DEFAULT '', 
    `block_title` VARCHAR(100) NOT NULL DEFAULT '', 
    `block_show_title` BOOL, 
    `block_type` VARCHAR(4) NOT NULL DEFAULT '', 
    `block_content` LONGTEXT NOT NULL, 
    `block_access` TINYINT(4) NOT NULL, 
    `block_groups` LONGTEXT NOT NULL, 
    `block_enabled` BOOL, 
    `block_expire` BOOL, 
    `block_expire_date` INT(11) NOT NULL, 
    `block_expire_action` BOOL, 
    PRIMARY KEY (`block_id`) 
);

Спустя 3 минуты, 54 секунды (12.01.2007 - 15:00) Rem написал(а):
вообще где ты видел чтобы два запроса умещали в 1?<br>сложно что ли сделать так:<br>
 
//первый запрос
$sQuery="";
mysql_query($sQuery);
//второй запрос
$sQuery="";
mysql_query($sQuery);
 

и всё выполниться одновременно (почти).

Спустя 8 минут, 3 секунды (12.01.2007 - 15:08) -=[.:NemesiS:.]=- написал(а):
Представь, что таких запросов может быть несколько десятков.
При том, мне не известно сколько их будет.
Я получаю sql файл (см. выше) и должен его выполнить..
Хотя есть идея через регулярки вытянуть каждый запрос по отдельности и выполнить...
Как думаешь?

Спустя 1 минута, 31 секунда (12.01.2007 - 15:10) Ghost написал(а):
по-моему нет
вечером посмотрю как в пхп-админе реализовано выполнение запросов через разделитель, чего и тебе советую

Спустя 4 минуты, 14 секунд (12.01.2007 - 15:14) Rem написал(а):
вот тут хз...<br>если только так:<br>
 
mysql_query("...;","...;");
 

сам не пробовал.

Спустя 4 минуты, 6 секунд (12.01.2007 - 15:18) -=[.:NemesiS:.]=- написал(а):
А это идея...
Спасибо

Спустя 13 минут, 45 секунд (12.01.2007 - 15:32) Alexander K написал(а):
Привет!
Как написано в официальной документации - Строка запроса НЕ должна заканчиваться точкой с запятой. http://ru2.php.net/manual/ru/function.mysql-query.php
Также там видно, что первый параметр - запрос, второй, необязательный, ссылка на соединение, так что mysql_query("...;","...;"); не пройдет.

Спустя 3 часа, 31 минута, 22 секунды (12.01.2007 - 19:03) Vitas написал(а):
phpMyAdmin к примеру разбивает SQL на отдельные запросы и их отдельно выполняет.

Спустя 2 минуты, 52 секунды (12.01.2007 - 19:06) Rem написал(а):
не у него другая проблема.
он сам не знает скока запросов придёт.
мож всё таки делить?
на массив $sQuery и выполнять запрос когда заполниться через цикл.

Спустя 15 часов, 51 минута, 53 секунды (13.01.2007 - 10:58) Leningrad00 написал(а):
А, может, mysql_query(mysql_query("..."))?
Почему нельзя поискать в сети, попробовать сделать и только потом предложить?


_____________
I'll come when you will sleep...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.