微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 如何在使用PDO时设置SQL模式?

我试图设置sql模式,我无法弄清楚如何使用PDO.我试图在 MySQL中设置传统模式,不允许无效日期.

有人可以帮忙吗?

在运行时设置sql_mode时,可以使用可选的“SESSION”变量.这样它不会影响其他客户.您可以设置SESSION sql_mode,然后在查询完成后将其设置回上一个值.通过这种方式,您可以为特定操作设置sql_mode.

MySql手册:

“You can change the sql mode at runtime by using a SET
[GLOBAL|SESSION] sql_mode=’modes’ statement to set the sql_mode system
value. Setting the GLOBAL variable requires the SUPER privilege and
affects the operation of all clients that connect from that time on.
Setting the SESSION variable affects only the current client. Any
client can change its own session sql_mode value at any time.”

我个人在我的数据库类中添加了一些方法来处理这个问题. initsqlMode()将执行查询’SELECT SESSION.sql_mode’并将认值存储为类变量. setsqlMode()允许您将SESSION sql_mode设置为(VALIDATED)自定义值. resetsqlMode()将SESSION sql_mode设置回认值.我总是在操作sql_mode时使用SESSION变量.

然后你可以做类似以下的事情.注意这只是伪代码;我的例子中没有任何东西可以阻止sql注入或参数化SQL查询.

$db = new database();
$badqueryresult = $db->executeStrict('BAD sql QUERY');
Class database {
     ...
     function executeStrict($query){
      $this->initsqlMode();
      $this->setsqlMode('STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION');
      $result = $this->Execute($query);
      $this->resetsqlMode();
      return $result;
     }
}

原文地址:https://www.jb51.cc/php/139048.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐