2014-10-24 3 views
0

PDO에서 하위 쿼리를 실행하려고하는데 PDO에 하위 쿼리가 없습니다. 어떤 제안?PDO => 'SQLSTATE [HY093] : 메시지가있는'PDOException '매개 변수 번호가 잘못되었습니다. 매개 변수가 정의되지 않았습니다.'

catch되지 않은 예외 메시지 '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); 
+0

내가 phpMyAdmin을 그것을 실행하면이 쿼리가 작동을하지만, PDO는 그것을 실행되지 않습니다. – user2616178

+0

나는 당신이 오류를 확인하지 않고 있다고 생각합니다. 요즘 누구 요? 컴퓨터가 너무 완벽하지? –

+0

PDO를 처음 접했습니다. 바보 같은 실수 였어. – user2616178

답변

3

당신이 쓴 :

:promotionId 

당신이 결합하는 경우 매개 변수 :

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

같은 방법으로 작성해야합니다. promotio 알았어! = promotion_id. 이에

p.id = :promotionId 

:

그래서 당신은이 라인을 변경해야합니다

p.id = :promotion_id 
관련 문제