在MySQL 5.7中将sql_mode设置为“空白”,仅使用mysqli_query

Sum*_*tel -1 php mysql mysqli

我尝试了与此主题相关的所有问题和答案。另外,我尝试了相关问题并尝试解决,但未成功。因此,请仔细阅读我的问题。

相对答案搜索

  1. 在mysql中设置全局sql_mode

  2. https://dba.stackexchange.com/questions/109053/set-sql-mode-blank-after-upgrading-to-mysql-5-6

  3. 如何从PHP将MySql SQL_MODE设置为ANSI

  4. http://php.net/manual/zh/mysqli.options.php

我想在mysql中更新全局变量sql_mode = ''

将MySQL从5.5升级到5.7.15后,我们的某些应用遇到了问题,需要将sql_mode设置为blank才能解决此问题。我添加了sql_mode ='',但对mysql设置没有影响。

如何将sql_mode保留为空白?

累代码

$db = new DB_Sql();
$db->Host  = "172.**.**.**";
$db->Database   = "MyDatabase";
$db->User   = "root";
$db->Password   = "MyPassword";

global $ourFileName,$link;  

$SITE_URL="http://".$_SERVER[HTTP_HOST];
$SITE_HTTPS_URL="http://".$_SERVER[HTTP_HOST];

$ourFileName = $_SERVER['DOCUMENT_ROOT'] . "/Log/MaintenaceLogFiles.txt"; 

 $ndb=$mdb=$db; 

 $link=mysqli_connect($db->Host, $db->User, $db->Password,$db->Database);

    if(mysqli_connect_errno())
    {
    echo '<p>Error: Unable to connect to MySQL: '.mysqli_connect_error().'</p>';
    }

  mysqli_query($link,"set sql_mode = '' ") or die(mysqli_error());  
Run Code Online (Sandbox Code Playgroud)

注意: mysqli_query 使用不使用 .cnf

You*_*nse 6

您为什么认为它不起作用?

它对我有用

$row = $mysqli->query("SHOW VARIABLES LIKE 'sql_mode'")->fetch_row();
var_dump($row[1]);

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

$row = $mysqli->query("SHOW VARIABLES LIKE 'sql_mode'")->fetch_row();
var_dump($row[1]);
Run Code Online (Sandbox Code Playgroud)

输出

string(62) "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
string(0) ""
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因想要将其设置为全局(而不应该在root用户下运行查询)

$mysqli->query("SET GLOBAL sql_mode='', SESSION sql_mode=''");
Run Code Online (Sandbox Code Playgroud)