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 代码中将参数括在引号中。

因此,prepare 语句应如下所示:

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