2013-05-16 1 views
0

MySQL 클라이언트에서 완벽하게 작동하고 올바른 결과를 반환하는 쿼리가 왜 나오는지 알고 있기 때문에 실제로 머리를 긁적니다. . 내 질문은 다음과 같습니다SQL 클라이언트에서 작업하는 쿼리가 PHP와 PDO를 사용하여 행을 반환하지 않습니다.

SELECT id, title, img 
FROM blog_posts JOIN blog_img 
ON blog_posts.id = blog_img.id_post 
WHERE id='1'; 

내 PHP/PDO 코드는 다음과 같습니다

$query = $this->dbconn->get_db_access()->prepare("SELECT id, title, img 
                FROM blog_posts JOIN blog_img 
                ON blog_posts.id = blog_img.id_post 
                WHERE id=:id"); 
$query->bindParam(":id", $id); 
$result = $query->fetch(PDO::FETCH_ASSOC); 
print_r($result); 

없음 PDOException가 발생하고 아직 $result 배열이 비어 있습니다. 아무도 설명을 해줄 수 없습니까? 내가 잘못하고있는 것이 있습니까? 바인딩 후 "최종"SQL 코드를 "확인"할 수있는 방법이 있습니까? 그렇기 때문에 모든 것이 잘되었는지 확인해야합니다.

+5

두 가지 다른 검색어가있을 수 있습니다. 'ON blog_posts.id'와'ON blog_post.id' –

+0

질의가 실행될 때'$ id'의 값은 무엇입니까? – War10ck

+0

@ War10ck 실제로이 코드는'foreach'에 있으므로'$ id'가 다른 id 값을 가질 때마다 올바른 값을 가지므로 질의가 실패하지 않습니다. – haunted85

답변

1

실제로 준비된 명령문을 실행하지 않습니다. 데이터를 검색하기 전에 실행해야합니다. 이 같은

시도 뭔가 : prepare()PDOStatement 개체를 반환 것

$sql = "SELECT id, title, img 
FROM blog_posts JOIN blog_img 
ON blog_post.id = blog_img.id_post 
WHERE id=:id"; 

$stmt = $this->dbconn->get_db_access()->prepare($sql); 
$stmt->bindParam(':id', $id); 
$stmt->execute(); 

$result = $stmt->fetch(PDO::FETCH_ASSOC); 

참고. 그런 다음 매개 변수를 PDOStatment 개체에 바인딩하고 execute() 준비된 문을 바인딩합니다.

마지막으로 결과는 fetch()입니다.

+0

예, 감사합니다. 그것은 매력처럼 작동했습니다. – haunted85

관련 문제