Синтаксическая ошибка сценария установки MySQL «У вас ошибка в синтаксисе SQL; [...]» - PullRequest
2 голосов
/ 31 июля 2010

У меня есть скрипт установки на моем сайте, и когда я его запускаю, он выдает мне эту ошибку:

У вас ошибка в синтаксисе SQL; проверьте правильность синтаксиса для руководства, соответствующего версии вашего сервера MySQL, рядом с 'CREATE TABLE active_guests (ip varchar (15) collate latin1_general_') в строке 2

Вот код, в котором кажется, что ошибка:

$sql = 'SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
        CREATE TABLE `active_guests` (
          `ip` varchar(15) collate latin1_general_ci NOT NULL,
          `timestamp` int(11) unsigned NOT NULL,
          PRIMARY KEY  (`ip`)
        );'; 

mysql_query($sql,$con) or die(mysql_error());

$sql = 'CREATE TABLE `active_users` (
           `username` varchar(30) collate latin1_general_ci NOT NULL,
           `timestamp` int(11) unsigned NOT NULL,
           PRIMARY KEY  (`username`)
        );';

mysql_query($sql,$con) or die(mysql_error());

$sql = 'CREATE TABLE `banned_users` (
           `username` varchar(30) collate latin1_general_ci NOT NULL,
           `timestamp` int(11) unsigned NOT NULL,
           PRIMARY KEY  (`username`)
        );';

Это продолжается еще больше после этого, но в основном это так. Кто-нибудь может прояснить ситуацию? Заранее спасибо!

1 Ответ

4 голосов
/ 31 июля 2010

Вы можете выполнить только один оператор на каждый вызов mysql_query().

Таким образом, вы должны запустить SET SQL_MODE ..., а затем отдельно запустить первый CREATE TABLE ...


Ваш комментарий: я рекомендую вам придерживаться выполнения одного оператора на вызов mysql_query() или его эквивалент в MySQL или PDO.В этом действительно нет существенных недостатков, и это хороший способ предотвратить некоторые формы SQL-инъекций .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...