PHP PDO 强制 SQL99

标签 php mysql sql pdo

我正在使用 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/

相关文章:

mysql - 包括 NULL 月份

sql - Postgresql,一个函数调用另一个函数并向调用者获取2个输出值

Javascript 数据和 html 传输

php - 这个查询有什么问题

mysql - SQL如何查找进度

mysql - 存储/索引之前的 REVERSE() 电子邮件地址,或不?

c# - 如何使用 C# 从 SqlConnection 返回多个结果

mysql - 计算 MySQL 中列的简单中位数

php - Javascript 警报不在 php 联系表单中显示变音符号

php - 在所有 Woocommerce 电子邮件通知中更改 "reply to"电子邮件地址