Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用PDO显示查询结果_Php_Html_Mysql_Pdo - Fatal编程技术网

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']