簡體   English   中英

PDO准備的聲明未返回預期結果

[英]PDO prepared statement not returning expected results

$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的新手,但我似乎無法看到這里有什么問題。

提前致謝。

啊,我明白了。 我會把我的愚蠢放在這里,以防其他人發生這種情況。

顯然,在使用預准備語句時,您不需要在SQL代碼中將參數包裝在引號中。

因此,prepare語句應如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM