MySQL语法错误不一致,具体取决于是从命令行还是mysqli_connect进行查询

wyyhbhjk  于 2022-11-21  发布在  Mysql
关注(0)|答案(1)|浏览(80)

一个简单的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运行时,它会打印一个错误:
使用表格;插入表格(aColumn)值('aValue');
错误:SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行的“INSERT INTO aTable(aColumn)VALUES('aValue')”附近使用的正确语法
然而,当相同的查询粘贴到phpMyAdmin中时,它告诉我:
已插入1行。
插入的行ID:6(查询耗时0.0063秒。)
使用表格;插入表格(aColumn)值('aValue');
"为什么他们不同“

mzillmmw

mzillmmw1#

从PHP代码中删除USE,因为已经在mysqli_connect方法中选择了数据库。

$sql = "USE aTable; INSERT INTO aTable (`aColumn`) VALUES ('aValue');";

应道:

$sql = "INSERT INTO aTable (`aColumn`) VALUES ('aValue');";

此外,请确保在INSERT查询中没有使用数据库名称。

相关问题