mysqli多查询不执行查询

时间:2013-04-30 21:01:55

标签: php mysql

我正在尝试执行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);

2 个答案:

答案 0 :(得分: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;";

答案 1 :(得分:1)

您在查询之间缺少分号。

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