创建多个表时出现SQL错误

时间:2013-06-01 17:08:29

标签: php mysql sql

我正在尝试使用查询创建多个表,但它似乎不起作用。我正在使用PHP代码来执行查询。下面是我的PHP代码,我的查询和我的错误。

我的PHP代码:

<?php
$conn=mysql_connect("localhost","secret","secret") or die("Kan geen verbinding maken met de DB server"); 
mysql_select_db("secret",$conn) or die("Kan database niet selecteren"); 

$query_file = 'tables.txt';

$fp    = fopen($query_file, 'r');
$sql = fread($fp, filesize($query_file));
fclose($fp); 

mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not create table: ' . mysql_error());
}
mysql_close($conn);
?>

我的查询:

CREATE TABLE pages(
     id INT NOT NULL AUTO_INCREMENT,
     pagid VARCHAR(32) NOT NULL,
     title  VARCHAR(32) NOT NULL,
     content  TEXT NOT NULL,
     image   VARCHAR(65) NOT NULL,
     youtube   VARCHAR(32) NOT NULL,
     primary key ( id ));

CREATE TABLE members(
     id INT NOT NULL AUTO_INCREMENT,
     username  VARCHAR(65) NOT NULL,
     password  VARCHAR(65) NOT NULL,
     primary key ( id ));

CREATE TABLE news(
     id INT NOT NULL AUTO_INCREMENT,
     pagid VARCHAR(32) NOT NULL,
     title  VARCHAR(32) NOT NULL,
     content  TEXT NOT NULL,
     image   VARCHAR(150) NOT NULL,
     youtube   VARCHAR(32) NOT NULL,
     date   VARCHAR(32) NOT NULL,
     primary key ( id ));

CREATE TABLE gallery(
     id INT NOT NULL AUTO_INCREMENT,
     image VARCHAR(65) NOT NULL,
     title  VARCHAR(65) NOT NULL,
     description  TEXT NOT NULL,
     url   VARCHAR(200) NOT NULL,
     category   VARCHAR(65) NOT NULL,
     primary key ( id ));

我的错误:

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 members( id INT NOT NULL AUTO_INCREMENT, username VARCHA' at line 10

有谁知道我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

您可以使用mysql_query。该文档明确声明不支持多个查询。由于每个create语句都是自己的查询,因此您必须拆分查询字符串。

答案 1 :(得分:1)

试试这个:

$q1 = "CREATE TABLE pages(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    pagid VARCHAR(32) NOT NULL,
    title  VARCHAR(32) NOT NULL,
    content  TEXT NOT NULL,
    image   VARCHAR(65) NOT NULL,
    youtube   VARCHAR(32) NOT NULL)";

 $q2 = "CREATE TABLE members(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    username  VARCHAR(65) NOT NULL,
    password  VARCHAR(65) NOT NULL)";

 mysql_query($q1);
 mysql_query($q2);

如果您使用的是mysql_query,它一次只支持一个查询。

但是,我建议您避免使用mysql_*功能作为其折旧。试试mysqliPDO