我在PHP / 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得到结果。使用mysql_query在PHP中以旧方式运行相同的查询,我也得到124个结果。
我在PDO查询中缺少什么导致差异?
更新AL_ =&gt;的请求创建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 :(得分:0)
:min_personen
看起来没有在param数组中定义。看看吧。
答案 1 :(得分:0)
问题在于数据库的设置方式以及Pdo-&gt;准备如何发送信息。它总是在变量上加上单引号,我们在phpmyadmin选项中不期望/使用它。因此造成了分歧。 感谢所有好的建议。