PHP在MySQL SET MODE语句中连接多个模式?

标签 php mysql

我正在使用此 PHP 代码来设置 MySQL session 模式:

$query = "SET sql_mode = $newmode";
$result = $mysqli->query($query);

下面的值可以正常工作并且所有 MySQL 模式都被禁用:

$newmode ="''";

这也可以正常工作:

$newmode = "ANSI";

但是,如果我组合模式,例如

$newmode ="HIGH_NOT_PRECEDENCE,IGNORE_SPACE,NO_AUTO_CREATE_USER";

它不起作用——为 session 设置了默认的全局模式。

我尝试先禁用所有模式,然后发出 SET 语句,但没有任何效果。

有人知道如何在 MySQL SET SESSION 语句中连接模式吗?

最佳答案

我认为问题出在引号中。

清除 $newmode 时,您将 '' 作为值,因此 SQL 看起来像 sql_mode=''

$newmode 添加更多选项时,您只是忘记了引号,因此 SQL 看起来像 sql_mode=HIGH_NOT_PRECEDENCE,IGNORE_SPACE,NO_AUTO_CREATE_USER,这可能会导致语法错误.

注意引号并尝试此解决方案:

//$newmode = "";
//$newmode = "ANSI";
$newmode = "HIGH_NOT_PRECEDENCE,IGNORE_SPACE,NO_AUTO_CREATE_USER";

$query = "SET sql_mode = '$newmode'";
$result = $mysqli->query($query);

关于PHP在MySQL SET MODE语句中连接多个模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39155363/

相关文章:

php - 获取类函数的参数数量

php - 是否有任何插件可以将缩略图等图像扩展到一些大尺寸?

javascript - 如何在自提交表单上使用 mailto?

sql - Mysql查询查询记录时出现的问题

php - PDO 关联数组 - 返回关联

java - 将 PHP/jQuery 应用程序移植到 Java/Wicket

PHP/MySQL,如何只更新数据库中的一些记录,而不是一次全部更新?

mysql - bool 字段上的 ORDER 比 PK 上的订单慢得多

php - 从 MySQL 数据库中检索图像

php - 无 HTTP 响应的 HTTP 请求