当使用 PDO 准备 SQL 查询时,我应该/必须这样做
$query->bindValue('column', $value, is_null($value) ? PDO::PARAM_NULL : PDO::PARAM_STR);
Run Code Online (Sandbox Code Playgroud)
或者我可以直接使用PDO::PARAM_INT
or PDO::PARAM_STR
,因为 PDO 会自己计算出来?(在我看来,这确实是应该的)
作为一个好奇的后续问题,如果我不必使用PDO::PARAM_NULL
,它实际上是做什么用的?
不,您不需要使用PDO::PARAM_NULL
. 如果将 NULL 与任何类型绑定,则 PDO 将在内部使用 NULL。该值不会转换为字符串、数字或任何其他类型。NULL 将保持为 NULL。
当您将类型设置为PDO::PARAM_NULL
它时,相当于将值设置为 NULL。有人可能会认为这PDO::PARAM_NULL
是无用的,因为将 NULL 与任何其他类型绑定时都可以获得相同的结果。
以下语句都将绑定文字 NULL 值。
$str = 'someString';
$stmt->bindParam(1, $str, PDO::PARAM_NULL);
$str = null;
$stmt->bindParam(1, $str, PDO::PARAM_STR);
$stmt->bindValue(1, null);
Run Code Online (Sandbox Code Playgroud)