2012-10-21 30 views
0

我在PHP/PDO中准备了以下查询。PhpMyAdmin和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 

然后我以下数组绑定到这个查询:

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

通过PHP运行此我得到作为用于 'aantal' 的结果:97(结果)。 如果我运行上面的查询,用所对应的值替换所有变量,我通过PhpMyAdmin 124结果获得。在PHP中使用mysql_query在旧时尚方式上运行相同的查询,我也得到了124个结果。

我在导致差异的PDO查询中缺少什么?

UPDATE到AL_ =>创作PDO连接的请求:

$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

请'print_r()'_actual_数组的内容并将它们放在上面。 –

+0

Michael&AL_,我已经对上面的内容进行了更新。 – Ralf

回答

0

:min_personen貌似没有在param数组中定义。一探究竟。

+0

看起来像我在复制查询中犯了一个错字,它们是一样的。 – Ralf

0

问题在于te数据库安装的方式以及Pdo-> prepare如何发送信息。它总是把单引号放在变量上,我们不希望/在phpmyadmin选项中使用它。因此造成差异。 感谢所有的好建议。