1

我正在尝试执行 3 个查询以在数据库中创建表,但它不会执行给我一个语法错误的查询。任何人都可以看看这段代码并告诉我我打错了什么来完成这项工作吗?我已经尝试了所有方法,但无法执行查询!

$dh = mysqli_connect($_POST['hostname'], $_POST['username'], $_POST['password'],           $_POST['database']);
if(! $dh )
{
  die('Could not connect: ' . mysql_error());
}
echo "Connected successfully...<br /><br />";

$query = "CREATE TABLE IF NOT EXISTS `content` (
               `content_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
               `section_id` INT(11) NOT NULL,
               `header` VARCHAR(255) NOT NULL,
               `sub_header` VARCHAR(255) NOT NULL,
               `date_range` VARCHAR(64) NOT NULL,
               `content_body` TEXT NOT NULL
              ) ENGINE=InnoDB DEFAULT CHARSET=latin1";

$query .= "CREATE TABLE IF NOT EXISTS `sections` (
               `section_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
               `title` VARCHAR(255) NOT NULL,
               `position` INT(11) NOT NULL
              ) ENGINE=InnoDB DEFAULT CHARSET=latin1";

$query .= "CREATE TABLE IF NOT EXISTS `sections` (
               `user_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
               `username` VARCHAR(32) NOT NULL,
               `password` VARCHAR(32) NOT NULL,
               `first_name` VARCHAR(32) NOT NULL,
               `last_name` VARCHAR(32) NOT NULL,
               `email` VARCHAR(1024) NOT NULL
              ) ENGINE=InnoDB DEFAULT CHARSET=latin1";

$retval = mysqli_multi_query($dh, $query);
4

2 回答 2

1

查询之间没有分号,您将它们全部连接在一起并立即运行。

如果您正在运行多个这样的查询,您需要在每个查询的末尾使用分号

$query = "CREATE TABLE IF NOT EXISTS `content` (
               `content_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
               `section_id` INT(11) NOT NULL,
               `header` VARCHAR(255) NOT NULL,
               `sub_header` VARCHAR(255) NOT NULL,
               `date_range` VARCHAR(64) NOT NULL,
               `content_body` TEXT NOT NULL
              ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";

$query .= "CREATE TABLE IF NOT EXISTS `sections` (
               `section_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
               `title` VARCHAR(255) NOT NULL,
               `position` INT(11) NOT NULL
              ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";

$query .= "CREATE TABLE IF NOT EXISTS `sections` (
               `user_id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
               `username` VARCHAR(32) NOT NULL,
               `password` VARCHAR(32) NOT NULL,
               `first_name` VARCHAR(32) NOT NULL,
               `last_name` VARCHAR(32) NOT NULL,
               `email` VARCHAR(1024) NOT NULL
              ) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
于 2013-04-30T21:05:06.593 回答
1

您在查询之间缺少分号。

所以你试图执行这样的事情:<...> ENGINE=InnoDB DEFAULT CHARSET=latin1CREATE TABLE <...>

于 2013-04-30T21:05:07.727 回答