2014-01-21 3 views
-2

Я делаю простую установку скрипта, в которой пользователь входит на страницу, создаются системные таблицы. Код SQL для этих таблиц находится в том же каталоге, к которому я обращаюсь через функцию file_get_contents, а затем в mysql_query.Несколько mysql_query?

Но всегда получайте сообщение об ошибке. Я не понимаю этого, потому что, например, когда я запускаю код phpMyAdmin, он идет без проблем. Что это может быть?

PHP

$sql = file_get_contents("install.sql"); 
    mysql_query($sql) or die("Error: ".mysql_error()); 

SQL

DROP TABLE IF EXISTS `jogos`; 
    CREATE TABLE `jogos` (
    `id` int(15) NOT NULL AUTO_INCREMENT, 
    `casaid` varchar(255) NOT NULL, 
    `foraid` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

Ошибка

Ошибка: У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи

'CREATE TABLE `jogos` (
    `id` int(15) NOT NULL AUTO_INCREMENT, 
    `casaid` varc' 

в строке 2


Спасибо заранее.

EDIT:

Благодаря Джоэл и Флориан для объяснения. В любом случае, я не знаю о MySQLi, решение, которое не нужно использовать расширение. Для тех, кто в этом нуждается:

$sqls = ""; // here go your all sql's 
$split_sqls = explode(";", $sql); 
for($index = 0; $index < count($split_sqls) - 1; $index++) { 
    $query = mysql_query($split_sqls[$index]); 
if(!$query) 
    die("Error at $index SQL.\n\n".mysql_error()); 
} 

С уважением!

+0

[? Почему я не должен использовать mysql_ * функции в PHP] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions -в-PHP) – Phil

ответ

2

Несколько запросов не поддерживаются в одном mysql_query. Вам нужно будет использовать что-то, что его поддерживает, например mysqli::multi_query. Изучение mysqli или PDO принесет пользу вам в долгосрочной перспективе, так как расширение mysql устарело на хороших основаниях.

0

Несколько запросов не поддерживаются функцией mysql_query(). PHP5 имеет функцию mysqli_multi_query(), которая выполняет один или несколько запросов, которые объединены точкой с запятой.

$link = mysqli_connect("host", "user", "password", "database"); 

$query = file_get_contents("install.sql"); 
mysqli_multi_query($link, $query) or die("Error: ".mysqli_error($link));; 

mysqli_close($link); 

Для получения дополнительной информации см. here.

0

Спасибо Джоэл и Флориан за разъяснение. В любом случае, я не знаю о MySQLi, решение, которое не нужно использовать расширение. Для тех, кто нуждается в ней:

$sqls = ""; // here go your all sql's 
$split_sqls = explode(";", $sql); 
for($index = 0; $index < count($split_sqls) - 1; $index++) { 
    $query = mysql_query($split_sqls[$index]); 
if(!$query) 
    die("Error at $index SQL.\n\n".mysql_error()); 
} 
Смежные вопросы