Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO=>';PDO异常';带有消息';SQLSTATE[HY093]:参数编号无效:未定义参数';_Php_Mysql_Pdo_Subquery - Fatal编程技术网

Php PDO=>';PDO异常';带有消息';SQLSTATE[HY093]:参数编号无效:未定义参数';

Php PDO=>';PDO异常';带有消息';SQLSTATE[HY093]:参数编号无效:未定义参数';,php,mysql,pdo,subquery,Php,Mysql,Pdo,Subquery,我试图在我的PDO中运行一个子查询,但PDO没有它。有什么建议吗 未捕获异常“PDOException”,消息为“SQLSTATE[HY093]:参数编号无效:未定义参数” $userId = 1; $promotionId = 1; $sql = " SELECT *, ( SELECT COUNT(*) FROM promoti

我试图在我的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
$getPromotions->bindValue(':promotion_id', $promotionId, PDO::PARAM_STR);
你需要用同样的方式来写,promotionId!=促销标识

所以你应该改变这一行:

p.id = :promotionId
为此:

p.id = :promotion_id

您在查询中写道:

:promotionId
$getPromotions->bindValue(':promotion_id', $promotionId, PDO::PARAM_STR);
绑定参数时,您编写了:

:promotionId
$getPromotions->bindValue(':promotion_id', $promotionId, PDO::PARAM_STR);
你需要用同样的方式来写,promotionId!=促销标识

所以你应该改变这一行:

p.id = :promotionId
为此:

p.id = :promotion_id

您在查询中写道:

:promotionId
$getPromotions->bindValue(':promotion_id', $promotionId, PDO::PARAM_STR);
绑定参数时,您编写了:

:promotionId
$getPromotions->bindValue(':promotion_id', $promotionId, PDO::PARAM_STR);
你需要用同样的方式来写,promotionId!=促销标识

所以你应该改变这一行:

p.id = :promotionId
为此:

p.id = :promotion_id

您在查询中写道:

:promotionId
$getPromotions->bindValue(':promotion_id', $promotionId, PDO::PARAM_STR);
绑定参数时,您编写了:

:promotionId
$getPromotions->bindValue(':promotion_id', $promotionId, PDO::PARAM_STR);
你需要用同样的方式来写,promotionId!=促销标识

所以你应该改变这一行:

p.id = :promotionId
为此:

p.id = :promotion_id

当我在PhpMyAdmin中运行此查询时,它会工作,但PDO不会运行它。我认为您没有检查错误。现在是谁干的?计算机是如此完美,不是吗?只是PDO的新手。这是一个愚蠢的错误当我在PhpMyAdmin中运行此查询时,它可以工作,但PDO不会运行它。我认为您没有检查错误。现在是谁干的?计算机是如此完美,不是吗?只是PDO的新手。这是一个愚蠢的错误当我在PhpMyAdmin中运行此查询时,它可以工作,但PDO不会运行它。我认为您没有检查错误。现在是谁干的?计算机是如此完美,不是吗?只是PDO的新手。这是一个愚蠢的错误当我在PhpMyAdmin中运行此查询时,它可以工作,但PDO不会运行它。我认为您没有检查错误。现在是谁干的?计算机是如此完美,不是吗?只是PDO的新手。这是一个愚蠢的错误