Php 将mysql代码转换为PDO不会产生任何输出

Php 将mysql代码转换为PDO不会产生任何输出,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试使用OOP方法转换提供给PDO的代码。到目前为止,我得到的是: comments.PHP: public function loadComments() { $sql = "SELECT * FROM `comments` WHERE `comments`.`ImageID` = :imageid ;"; try {

我正在尝试使用OOP方法转换提供给PDO的代码。到目前为止,我得到的是:

comments.PHP:

public function loadComments() {
              $sql = "SELECT * FROM `comments`
                      WHERE
                      `comments`.`ImageID`  = :imageid ;";

            try
            {
                $imageid = $_REQUEST['imageid'];



                $query = $this->_db->prepare($sql);
                $params = array(':imageid' => $imageid);
                $query->execute($params); 

                for ($x = 0, $row = $query->fetch(PDO::FETCH_ASSOC); $x < $row; $x++) {
                 $comments[$x] = array("name" => $row["name"], "comment" => $row["comment"], "date" => $row["date"]);       
                    }

                $response = $_GET["jsoncallback"] . "(" . json_encode($comments) . ")";
                echo $response;
                return TRUE;

            }
            catch(Exception $ex)
            {
                return FALSE;
            }
    }

我哪里出错了?

当我认为您打算使用
$x<$numrows
时,您正在使用
$x<$row

for ($x = 0, $row = $query->fetch(PDO::FETCH_ASSOC); $x < $row; $x++)
                                                          ^^^^^
$numrows = $query->rowCount();
for ($x = 0, $row = $query->fetch(PDO::FETCH_ASSOC); $x < $numrows; $x++)

如果使用
$comments[]
语法,则不需要使用
$x
计数器,因为这会将每一新行附加一个数字键到数组中。

for循环错误。您需要获取行数,然后在每次循环迭代中调用
$query->fetch()

$numrows = //...
for ($x = 0; $x < $numrows; $x++) {
  $row = $query->fetch(PDO::FETCH_ASSOC);
  $comments[$x] = array("name" => $row["name"], "comment" => $row["comment"], "date" => $row["date"]);       
}
$numrows=/。。。
对于($x=0;$x<$numrows;$x++){
$row=$query->fetch(PDO::fetch_ASSOC);
$comments[$x]=数组(“名称”=>$row[“名称”],“注释”=>$row[“注释”],“日期”=>$row[“日期”]);
}

以下行有语法错误(逗号而不是分号):

for($x=0,$row=$query->fetch(PDO::fetch_ASSOC);$x<$row;$x++){
应该是:

for ($x = 0; $row = $query->fetch(PDO::FETCH_ASSOC); $x < $row; $x++) {
for($x=0;$row=$query->fetch(PDO::fetch_ASSOC);$x<$row;$x++){

逗号语法实际上是有效的。
$numrows = //...
for ($x = 0; $x < $numrows; $x++) {
  $row = $query->fetch(PDO::FETCH_ASSOC);
  $comments[$x] = array("name" => $row["name"], "comment" => $row["comment"], "date" => $row["date"]);       
}
for ($x = 0, $row = $query->fetch(PDO::FETCH_ASSOC); $x < $row; $x++) {
for ($x = 0; $row = $query->fetch(PDO::FETCH_ASSOC); $x < $row; $x++) {