PDO ::引用nulls,bools等等

时间:2013-06-18 21:55:11

标签: php pdo

无论我传递的值的类型,还是我设置的参数类型,

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);
}

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

不同的parameter types 做什么吗?

1 个答案:

答案 0 :(得分:1)

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

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

但实际上,最好只使用预处理语句而不是触及quote()。毕竟,即使是documentation for quote也这么说。