我正在使用 PDO 连接到 MySQL 数据库。
try {
$this->myDBH = new PDO("mysql:host={$db_host};dbname={$db_name}", $db_user, $db_pass);
$this->myDBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $e) {
$cameralife->error('Database error: ' . htmlentities($e->getMessage()));
}
我能否启用“严格的”SQL-99 合规模式以拒绝任何不符合该标准的查询?
最佳答案
你可以指定 mysql sql_mode
像这样的查询
SET SESSION sql_mode = 'xxx'
其中 xxx 是 valid sql modes 之一.
有一个ansi
sql mode ,这使得 MySQL 的行为更像一个符合标准的 DBMS。虽然只是“更像”而不是“像”。
您可以阅读有关可能的 sql 模式的信息 in the manual .组合的 sql 模式很有趣。
还有一个专门针对 standards compliance 的手册页,将 sql_mode="ansi"
命名为一个选项。
我不知道有什么方法可以使用纯 PDO 和/或没有此设置来实现类似的效果。
关于PHP PDO 强制 SQL99,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23503571/