PDO=>';PDOException';带有消息';SQLSTATE[HY093]:无效的参数编


PDO => 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined'

我正试图在我的PDO中运行一个子查询,但PDO没有。有什么建议吗?

未捕获异常"PDOException",消息为"SQLSTATE[HY093]:无效参数编号:未定义参数"

$userId = 1;
$promotionId = 1;
$sql = "
    SELECT 
        *, 
        ( 
            SELECT 
                COUNT(*) 
            FROM 
                promotion_user as spu 
            WHERE 
                spu.promotion_id = p.id AND 
                spu.user_id = :user_id 
        ) as num_uses 
    FROM 
        promotion as p 
    WHERE 
        p.id = :promotionId
";
//$db is the PDO connection
$getPromotions = $db->prepare($sql);
$getPromotions->bindValue(':user_id', $userId, PDO::PARAM_STR);
$getPromotions->bindValue(':promotion_id', $promotionId, PDO::PARAM_STR);
$getPromotions->execute();
$promotions = $getPromotions->fetchAll(PDO::FETCH_ASSOC);

在您的查询中,您写道:

:promotionId

当你在绑定参数时,你写道:

$getPromotions->bindValue(':promotion_id', $promotionId, PDO::PARAM_STR);

您需要以相同的方式编写,promotionId!=promotion_id。

所以你应该更改这一行:

p.id = :promotionId

对此:

p.id = :promotion_id