在MySQL 5.7中设置sql_mode“blank”只使用mysqli_query

时间:2017-03-22 10:10:09

标签: php mysql mysqli

  

我尝试了所有问题&与此主题相关的答案。此外,我尝试了相关的问题,并尝试解决它,但没有成功。所以请仔细阅读我的问题。

相对答案搜索

  1. setting global sql_mode in mysql

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

  3. How To Set MySql SQL_MODE to ANSI from PHP

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

  5. 我想更新mysql sql_mode = ''中的全局变量。

    将MySQL从5.5升级到5.7.15后,我们的一些应用面临问题,需要将sql_mode设置为空白才能解决此问题。我添加了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());  
    

    注意: 仅使用 mysqli_query 不使用 .cnf

1 个答案:

答案 0 :(得分:4)

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

它对我有用

$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]);

输出

string(62) "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
string(0) ""

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

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