2012-10-21 3 views
0

PHP/PDO에서 다음 쿼리를 준비합니다.PhpMyAdmin과 PDO 간의 결과 쿼리의 차이점 PDO

SELECT 
    count(distinct(p.accid)) as aantal 
FROM 
    winter_accommodaties_prijzen p 
INNER JOIN winter_accommodaties a ON (a.id = p.accid) 
INNER JOIN winter_dorpen d ON (d.id = a.did) 
INNER JOIN winter_gebied g ON (g.id = d.gid) 
INNER JOIN winter_accommodaties_types t ON (a.tid = t.id) 
WHERE 
    g.lid IN(:lid0) AND 
    g.min_hoogte >= :hoogte AND 
    (g.pistes_groen+g.pistes_blauw+g.pistes_rood+g.pistes_zwart) >= :km AND 
    d.hoogte_dorp >= :hoogte_dorp AND 
    d.afstand_utrecht <= :afstand_utrecht AND 
    prijs < : max_prijs AND 
    p.persons >= :aantal_personen 

은 그 때 나는이 쿼리에 다음과 같은 배열을 바인딩 : 97 (결과) :

Array 
(
    [:lid0] => 1 
    [:hoogte] => 500 
    [:km] => 50 
    [:hoogte_dorp] => 500 
    [:afstand_utrecht] => 2500 
    [:max_prijs] => 1200 
    [:aantal_personen] => 4 
) 

내가 'aantal'에 대한 결과로 얻을 PHP를 통해이 작업을 실행합니다. 위의 쿼리를 실행하여 모든 변수를 해당 값으로 바꾸면 PhpMyAdmin을 통해 결과를 얻습니다. mysql_query를 사용하여 PHP에서 이전 방식으로 동일한 쿼리를 실행하면 124 개의 결과도 얻습니다.

차이점이있는 PDO 쿼리에는 무엇이 누락 되었습니까? PDO를 연결 AL_ => 작성의 요청 ​​

UPDATE :

$conn = new PDO(DB_DSN, DB_USER, DB_PASSWORD); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$query = "See query above" 

$query_pag_no = $conn->prepare($query); // the above query 
$query_pag_no->execute($bind_array); // the above array 

$aantal_resultaten = $query_pag_no->fetchColumn(); 

$ aantal_resultaten에서의 결과가 다음 97 (행)이다.

+0

작성에서 쿼리 실행까지 사용중인 pdo 객체를 게시하는 것이 좋습니다. –

+0

_actual_ 배열의 내용을'print_r()'하고 위에 게시하십시오. –

+0

Michael & AL_, 위의 내용을 업데이트했습니다. – Ralf

답변

0

:min_personen param 배열에 like가 정의되어 있지 않습니다. 확인 해봐.

+0

은 내가 쿼리의 복사에서 오타를 만든 것처럼 보입니다. – Ralf

0

문제는 te 데이터베이스가 설정되고 Pdo- 준비가 te 정보를 보내는 방식에있어 거짓이었습니다. 변수에 항상 작은 따옴표를 넣었습니다. phpmyadmin 옵션에서 기대하지 않았던/사용하지 않았습니다. 따라서 차이가 발생합니다. 좋은 제안을 보내 주셔서 감사합니다.