我有一个删除查询,我正在运行,但只是意识到这$user_id是无效的时候为null(在某些情况下会发生).
$id = 1;
$user_id = null;
$delete = $sql->prepare("
DELETE FROM
`game_player`
WHERE
`id` = ?
AND
`user_id` = ?
");
if ($delete->execute(array(
$id,
$user_id,
));
Run Code Online (Sandbox Code Playgroud)
有什么工作除了在值为null时有不同的查询,因为显然唯一的方法是让where工作正常user_id IS NULL而不是user_id = NULL...
DELETE FROM
`game_player`
WHERE
`id` = ?
AND
(`user_id` = ? OR ? IS NULL)
Run Code Online (Sandbox Code Playgroud)
小心圆括号混合在正确和有或经营者.
如果$user_id不是真的php类型null,但是说一个空字符串,你应该修改上面这样:
...
AND
(`user_id` = ? OR ? = '')
Run Code Online (Sandbox Code Playgroud)