1

PDO::quote似乎总是在两个单引号上打耳光,无论我传递它的值的类型或我设置的参数类型。

例如,

$x = null;
echo $pdo->quote($x,PDO::PARAM_NULL); // ''

因此,我用自己的函数扩展了 PDO 类,

public function quote($value, $parameter_type=PDO::PARAM_STR) {
    if(is_null($value)) return 'NULL';
    elseif(is_bool($value)) return $value ? 'TRUE' : 'FALSE';
    elseif(is_int($value)||is_float($value)) return $value;
    return parent::quote($value, $parameter_type);
}

我错过了任何案例吗?这样做有什么坏处吗?

不同的参数类型 什么作用吗?

4

1 回答 1

1

根据文档,调用的结果quote()取决于 PDO 驱动程序,因为不同的数据库以不同的方式转义字符串。所以有些司机可能需要在不同的地方报价。但实际上,如果您知道不需要引号,那么您不应该调用quote().

至于您的功能,这取决于您要做什么。如果您正在尝试构建一个与数据库无关的数据访问层,那么您的函数会因某些数据库而中断。这是因为不是所有的 DB 都具有布尔类型,例如 SQLite 中没有 TRUE 这样的值。

但实际上,最好只使用准备好的语句而不是触摸quote()。毕竟,即使是报价文件也是如此。

于 2013-06-18T23:08:06.993 回答