只是在我的 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 有效。
最佳答案
如 documentation 中所述, execute()
返回一个 bool 值。查看 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...
}
编辑:
针对您的评论的其他信息:
对于 UPDATE
或 DELETE
,您可以像您的示例一样执行一行操作,因为您可能不需要结果(或者只是 true
/false
查看请求是否成功)。
对于 SELECT
,您需要 fetch()
结果。您可以保留 bindParam()
并给出要执行的参数,就像您尝试过的那样,但如果没有 fetch()
,您将无法获得结果。
关于php - PDO、MySQL SELECT 语句返回 bool 值 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6933079/