Php 无法使用PDO显示查询结果
我正在尝试从一个查询中获取结果,该查询应该会获得多个结果并将它们全部显示在页面上。但是,它不显示任何内容。我猜我的语法对我来说是个错误。但我不确定Php 无法使用PDO显示查询结果,php,html,mysql,pdo,Php,Html,Mysql,Pdo,我正在尝试从一个查询中获取结果,该查询应该会获得多个结果并将它们全部显示在页面上。但是,它不显示任何内容。我猜我的语法对我来说是个错误。但我不确定 //query to find comments about this map $query = " SELECT user_id, comment FROM map_comments WHERE map_id = :mapID
//query to find comments about this map
$query = "
SELECT
user_id,
comment
FROM map_comments
WHERE
map_id = :mapID
";
//query parameters
$query_params = array(
':mapID' => $_SESSION['mapID']
);
try
{
//execute query
$statement = $db->prepare($query);
$result = $statement->execute($query_params);
//get all results
$comments = $result->fetchAll;
if($result === FALSE)
{
die(mysql_error()); // TODO: better error handling
}
}
catch(PDOException $e)
{
die("failed to find comments");
}
foreach($comments as &$comment)
{
echo $comment;
}
调用函数时需要在函数后面加括号
$comments = $result->fetchAll;
应该是:
$comments = $statement->fetchAll();
此外,如果($result==FALSE)检查应在该行之前。您不能使用
mysql\u error()
如果您使用的是PDO,您应该使用$statement->errorInfo()
。或者应该在连接上启用PDO::ERRMODE_EXCEPTION
,然后调用catch
块。然后,您应该在它打印的错误消息中使用$db->errorInfo()
。调用它的函数后面需要括号
$comments = $result->fetchAll;
应该是:
$comments = $statement->fetchAll();
此外,如果($result==FALSE)检查应在该行之前。您不能使用
mysql\u error()
如果您使用的是PDO,您应该使用$statement->errorInfo()
。或者应该在连接上启用PDO::ERRMODE_EXCEPTION
,然后调用catch
块。然后应该在它打印的错误消息中使用$db->errorInfo()
。die(mysql_error());//TODO:更好的错误处理
-是的,嗯。。。当然,您需要“更好”的处理,如PDO,而不是mysql。我们也不知道您正在使用什么API连接,或者您是否启动了会话。die(mysql_error());//TODO:更好的错误处理
-是的,嗯。。。当然,您需要“更好”的处理,如PDO,而不是mysql。我们也不知道您正在使用什么API连接,或者您是否启动了会话。非常感谢,但现在我收到一个错误消息,说fetch all正在非Objective上使用。它应该是$statement->fetchAll()
。感谢您的帮助,我对此非常陌生,它现在为每个注释的值显示“Array”,它说我正在尝试数组到字符串的转换作为错误,知道为什么会这样吗?$fetchAll
返回一个二维数组。所以每个$comment
都是一个包含一行结果的数组。当您尝试回显数组时,它会将其转换为包含单词array
的字符串。对于数组使用var\u dump
,或者如果您只想查看没有user\u id的注释字段,则只需回显$comment['comment']
。非常感谢,但现在我收到一个错误消息,说fetch all正在非objective上使用,应该是$statement->fetchAll()
。感谢您的帮助,我对此非常陌生,它现在为每个注释的值显示“Array”,并表示我正在尝试将数组转换为字符串作为错误,知道为什么会出现这种情况吗?$fetchAll
返回一个二维数组。所以每个$comment
都是一个包含一行结果的数组。当您尝试回显数组时,它会将其转换为包含单词array
的字符串。对数组使用var\u dump
,如果您只想查看没有用户id的注释字段,则只需回显$comment['comment']
。