6

PHPを使用して複数のMySQLテーブルを作成しようとしていますが、エラーが発生し、何が問題なのかを整理できません。

PHP コード:

$sql = ' CREATE TABLE IF NOT EXISTS `mod_reminder_entries` 
  ( 
   `id`          INT(10) NOT NULL auto_increment, 
   `user_id`     INT(10) NOT NULL, 
   `entry_name`  VARCHAR(255) NOT NULL, 
   `entry_value` INT(10) NOT NULL, 
   PRIMARY KEY (`id`), 
   FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`) 
 ); 

 CREATE TABLE IF NOT EXISTS `second_table` 
  ( 
   `user_id`     INT(10) NOT NULL, 
   `fieldstotal` INT(10) NOT NULL, 
   FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`) 
  ); ';

  mysql_query($sql);

エラーが発生しますが、mysql 接続について心配する必要はありません。DB に適切に接続してテストしましたが、構文に問題があることは間違いありません。

SQL 構文にエラーがあります。'CREATE TABLE IF NOT EXISTS second_table( user_idINT

4

2 に答える 2

4

でセミコロン区切りのクエリを使用することはできませんmysql_query。この関数では、一度に 1 つのクエリしか許可されません。

ステートメントを個別に実行する必要があります。

mysql_query("
    CREATE TABLE IF NOT EXISTS `mod_reminder_entries` (
        `id` INT(10) NOT NULL AUTO_INCREMENT, 
        `user_id` INT(10) NOT NULL, 
        `entry_name` VARCHAR(255) NOT NULL, 
        `entry_value` INT(10) NOT NULL, 
        PRIMARY KEY (`id`), 
        FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`) 
    )
") or die(mysql_error());

mysql_query("
CREATE TABLE IF NOT EXISTS `second_table` (
    `user_id` INT(10) NOT NULL, 
    `fieldstotal` INT(10) NOT NULL, 
    FOREIGN KEY (`user_id`) REFERENCES tblclients (`id`) 
)
") or die(mysql_error());

または、mysqli_multi_queryを使用してください。これは、 mysqliに切り替える必要があることを意味します。

于 2012-12-24T16:48:26.663 に答える
2

エラーメッセージの内容を実行するだけです。

で一度に実行できるクエリは1 つだけですがmysql_*新しいコードでは関数を使用しないでくださいmysql_*。それらはもはや保守されておらず、公式に廃止されています。赤いボックスが見えますか? 代わりに準備済みステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2012-12-24T16:48:42.033 に答える