一個簡單的 MySQL 查詢通過mysqli_connect回傳語法錯誤,但相同的復制粘貼查詢在 CLI 和 phpMyAdmin 中都是成功的。
考慮 MySQL 8.0 的這個例子:
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "USE aTable; INSERT INTO aTable (`aColumn`) VALUES ('aValue');";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>
當 PHP 運行時,它會列印一個錯誤:
使用表格;INSERT INTO aTable ( aColumn) VALUES ('aValue');
錯誤:您的 SQL 語法有錯誤;檢查與您的 MySQL 服務器版本相對應的手冊,以aColumn在第 1 行的“INSERT INTO aTable () VALUES ('aValue')”附近使用正確的語法
但是,當將相同的查詢粘貼到 phpMyAdmin 中時,它會告訴我:
插入 1 行。
插入的行 id:6(查詢耗時 0.0063 秒。)
使用 aTable;INSERT INTO aTable ( aColumn) VALUES ('aValue');
為什么它們不同?
uj5u.com熱心網友回復:
從 PHP 代碼中洗掉 USE,因為在 mysqli_connect 方法中已經選擇了資料庫。
$sql = "USE aTable; INSERT INTO aTable (`aColumn`) VALUES ('aValue');";
應該:
$sql = "INSERT INTO aTable (`aColumn`) VALUES ('aValue');";
此外,請確保您沒有在 INSERT 查詢中使用資料庫名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/533064.html
