我正在尝试转换给定的代码 here使用 OOP 方法到 PDO。这是我到目前为止所得到的:
评论.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;
}
}
Firebug 抛出 undefined variable: comments
错误。
这是原始代码:
$query = mysql_query("SELECT
* FROM `comments`
WHERE
`comments`.`ImageID` = '$imageid' ;");
//loop through and return results
for ($x = 0, $numrows = mysql_num_rows($query); $x < $numrows; $x++) {
$row = mysql_fetch_assoc($query);
$comments[$x] = array("name" => $row["name"], "comment" => $row["comment"], "date" => $row["date"]);
}
//echo JSON to page
$response = $_GET["jsoncallback"] . "(" . json_encode($comments) . ")";
echo $response;
我哪里做错了?
最佳答案
您正在使用 $x < $row
当我认为你打算使用 $x < $numrows
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++)
整个循环可以这样写更好:
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$comments[] = array("name" => $row["name"], "comment" => $row["comment"], "date" => $row["date"]);
}
不需要 $x
如果你使用 $comments[]
计数器语法,因为这会将带有数字键的每个新行附加到数组中。
关于php - 将 mysql 代码转换为 PDO 没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6076952/