我正在使用此 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/