从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 举报,一经查实,本站将立刻删除。