2015-05-27 63 views
2

你好人夥計我想通過php運行sql查詢,但即時通訊得到一個錯誤,我無法修復。php sql查詢不能在php上工作

$sql = 'DROP TABLE IF EXISTS Stats; 
    CREATE TABLE Stats (
    id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name varchar(255) , 
    Type int , 
     below int , 
    meeting int , 
    exceeding int 
    ); '; 



if (mysqli_query($con, $sql)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($con); 
} 

螞蟻它給了我這個錯誤

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 Stats (id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, name varc' at line 2

但是如果我刪除DROP TABLE IF EXISTS Stats;線它的工作原理

$sql = 'CREATE TABLE Stats (
id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name varchar(255) , 
    Type int , 
    below int , 
    meeting int , 
    exceeding int 
); '; 

我得到

Error: CREATE TABLE Stats (id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, name varchar(255) , Type int , below int , meeting int , exceeding int); Table 'stats' already exists

因爲我得到的消息Table 'stats' already exists

關於如何解決這個問題的任何理由或想法將不勝感激。

回答

1

mysqli_query()不支持多條語句。所以你必須調用它兩次。首先放下表格並重新創建它。

$sql = 'DROP TABLE IF EXISTS Stats;'; 

if (mysqli_query($con, $sql)) { 
    echo "Table successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($con); 
} 


    $sql = '  CREATE TABLE Stats (
    id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name varchar(255) , 
    Type int , 
     below int , 
    meeting int , 
    exceeding int 
    ); '; 
if (mysqli_query($con, $sql)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($con); 
} 
+1

如果mysqli_query不支持多語句,那麼他可以使用mysqli_multi_query代替mysqli_query。 –

1

你可以試試這個: 從

$sql = 'DROP TABLE IF EXISTS Stats; 
    CREATE TABLE Stats (
    id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name varchar(255) , 
    Type int , 
     below int , 
    meeting int , 
    exceeding int 
    ); '; 

$sql = 'CREATE TABLE IF NOT EXISTS Stats (
     id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
     name varchar(255) , 
     Type int , 
      below int , 
     meeting int , 
     exceeding int 
     ); '; 
0

可以使用mysqli_multi_query()爲一個或多個查詢的執行。

又讀mysqli_multi_query執行多個語句

,如: -

$query = "DROP TABLE IF EXISTS Stats;"; 
$query .= "CREATE TABLE Stats (
    id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name varchar(255) , 
    Type int , 
     below int , 
    meeting int , 
    exceeding int 
    );"; 

/* execute multi query */ 
if ($mysqli->multi_query($con,$query)) { 
     //your code here 
} 

而對於這樣的錯誤: -

Table 'stats' already exists

你在你創建使用

CREATE TABLE IF NOT EXISTS `Stats` 

語句