0

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_ のリクエストに対する UPDATE => 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 (行) です。

4

2 に答える 2

0

問題は、データベースのセットアップ方法と、Pdo->prepareが情報を送信する方法にありました。変数には常に一重引用符が付けられますが、phpmyadminオプションでは予期/使用されていません。したがって、違いを引き起こします。すべての良い提案をありがとう。

于 2012-10-24T07:59:55.260 に答える
0

:min_personenparam Array で定義されていないようです。見てみな。

于 2012-10-21T14:44:46.993 に答える