2013-04-30 199 views
1

我想執行3個查詢來創建數據庫中的表,但它不會執行查詢給我一個語法錯誤。任何人都可以看看這段代碼,並告訴我我輸入的內容是錯誤的嗎?我已經嘗試了一切,我無法執行查詢!mysqli多查詢不執行查詢

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

回答

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;"; 
+0

我沒有你所說的話,它樣的工作。現在它加載前兩個查詢,但不是第三個。我的代碼看起來就像你的以上 – zachstarnes 2013-04-30 21:07:53

+0

你是否收到任何錯誤消息。如果有,你可以分享嗎? – fullybaked 2013-04-30 21:09:25

+0

我不知道。它只顯示前兩個查詢而不是第三個查詢。我錯過了第三張表 – zachstarnes 2013-04-30 21:11:02

1

你缺少查詢之間分號到底需要分號。

所以,你想這樣的東西執行:<...> ENGINE=InnoDB DEFAULT CHARSET=latin1CREATE TABLE <...>