2

Web サイトにインストール スクリプトがあり、それを実行すると、次のエラーが表示されます。

SQL 構文にエラーがあります。active_guests2 行目の 'CREATE TABLE ( ipvarchar(15) collat​​e latin1_general_' の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

バグがあると思われるコードは次のとおりです。

$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`)
        );';

その後もまだまだ続きますが、基本的にはこれです。誰でも物事を片付けることができますか?前もって感謝します!

4

1 に答える 1

4

への呼び出しごとに 1 つのステートメントのみを実行できますmysql_query()

したがってSET SQL_MODE ...、最初に実行してから個別に実行する必要がありますCREATE TABLE ...


あなたのコメントについて: 呼び出しごとに 1 つのステートメントを実行するmysql_query()か、mysqli または PDO で同等のステートメントを実行することをお勧めします。これを行うことによる重大なマイナス面は実際にはなく、ある種のSQL インジェクションを防ぐ良い方法です。

于 2010-07-31T01:45:06.590 に答える