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 做做什么吗?
答案 0 :(得分:1)
根据文档,对quote()
的调用结果取决于PDO驱动程序,因为不同的数据库以不同的方式转义字符串。因此,一些司机可能需要在不同地方的报价。但实际上,如果你知道你不需要引号,那么你就不应该调用quote()
。
至于你的功能,这取决于你想要做什么。如果您正在尝试构建与数据库无关的数据访问层,那么您的函数将会破坏某些数据库。这是因为并非所有DB都具有布尔类型,例如SQLite中没有TRUE值。
但实际上,最好只使用预处理语句而不是触及quote()
。毕竟,即使是documentation for quote也这么说。