1

$this->showが に設定されている場合、準備されたクエリは次の結果セットを返しますsaved-by-the-bell

season
------
1
2
3
4

次のコードを実行すると:

$seasons = array( );

$query = $db->prepare(
  "SELECT `season` " .
  "FROM `tv` " .
  "WHERE `show_url` = ':show' " . 
  "GROUP BY `season` " .
  "ORDER BY `season` ASC;"
);

$query->bindParam( ':show', $this->show );
$query->execute( );
$query->setFetchMode( PDO::FETCH_OBJ );

while( $row = $query->fetch( ) )
{
  $season = new stdClass;
  $season->number = $row->season;
  $season->title = "Season {$row->season}";
  $season->url = $row->season;

  $seasons[] = $season;
}

return $seasons;

$seasonsは空の配列です。なぜですか?

$db は、PDO を拡張するインスタンス化されたオブジェクトです。

あらゆる種類のデバッグ方法を試しましたが、rowCount をエコーすると 0 と表示されます。私はまだ PDO に慣れていませんが、ここで何が問題なのかわかりません。

前もって感謝します。

4

1 に答える 1

4

ああ、私はそれを理解しました。他の誰かがこれに出くわした場合に備えて、私の愚かさはここに置いておきます。

どうやら、準備されたステートメントを使用する場合、SQL コードでパラメーターを引用符で囲む必要はありません。

したがって、準備ステートメントは次のようになります。

$query = $db->prepare(
  "SELECT `season` " .
  "FROM `tv` " .
  "WHERE `show_url` = :show " . 
  "GROUP BY `season` " .
  "ORDER BY `season` ASC;"
);
于 2012-06-17T15:18:33.680 に答える