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


PDO, MySQL SELECT statement returning boolean true?

只是在我的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工作

如文档所述,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(),你不会得到你的结果。