在我的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正常工作。
答案 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...
}
修改强>
回复您的评论的其他信息:
对于UPDATE
或DELETE
,你可以像你的例子那样做一个单行,因为你可能不需要结果(或者只是true
/ false
查看请求是否成功)。
对于SELECT
,您需要fetch()
结果。您可以离开bindParam()
并执行参数,就像您尝试过的那样,但如果没有fetch()
,您将无法获得结果。