PDO,MySQL SELECT语句返回布尔值true?

时间:2011-08-03 20:46:14

标签: php mysql pdo

在我的MySQL语句中使用SELECT,尝试获取列。

$last_visit = $db->prepare( 'SELECT `last_visit` FROM `visitors` WHERE `ip` = :ip' )
        ->execute( $arr_ip );
var_dump( $last_visit );

var_dump的输出是bool(true)而不是我需要的数据。尝试->fetch()只会引发错误。

我该怎么办?这就是我的整个项目,无论我在哪里,都无法弄清楚出了什么问题。正确的数据在数据库中,连接正确并且INSERT正常工作。

1 个答案:

答案 0 :(得分:3)

documentation所述,execute()返回一个布尔值。看看fetch()的示例,看看你应该如何使用PDO。

在您的情况下,代码应如下所示:

$stmt = $db->prepare( 'SELECT `last_visit` FROM `visitors` WHERE `ip` = :ip' );
$stmt->bindParam(':ip', $arr_ip);
$stmt->execute();
if($row = $stmt->fetch()){
  $last_visit = $row['last_visit'];
}else{
  // whatever you like to do if there's no result...
}

修改
回复您的评论的其他信息:

对于UPDATEDELETE,你可以像你的例子那样做一个单行,因为你可能不需要结果(或者只是true / false查看请求是否成功)。

对于SELECT,您需要fetch()结果。您可以离开bindParam()并执行参数,就像您尝试过的那样,但如果没有fetch(),您将无法获得结果。