php – PDO准备语句 – NULL

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

有什么工作除了在值为null时有不同的查询,因为显然唯一的方法是使用user_id IS NULL而不是user_id = NULL …

DELETE FROM
    `game_player`
WHERE
    `id` = ?
AND
    (`user_id` = ? OR ? IS NULL)

混合时或与运算符一起使用时要小心括号.

如果$user_id实际上不是PHP类型为null,而是说一个空字符串,则应该修改上面的内容

...
AND
    (`user_id` = ? OR ? = '')

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...