PDO准备语句 - NULL

Ian*_*Ian 8 php sql null pdo

我有一个删除查询,我正在运行,但只是意识到这$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...

goa*_*oat 6

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)