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

Php PDO,MySQL SELECT语句返回布尔值true?,php,mysql,pdo,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()只会抛出一个错误 我能做什么?这阻碍了我的整个项目,无论我往哪

只是在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()
返回一个布尔值。请查看的eamples,以了解您应该如何使用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...
}
编辑:
回应您的评论的其他信息:

对于
更新
删除
,您可以像您的示例那样使用一行代码,因为您可能不需要结果(或者只需要
/
来查看请求是否成功)

对于
选择
,您需要
fetch()
结果。您可以离开
bindParam()
并像您尝试的那样给出要执行的参数,但是如果没有
fetch()
,您将无法得到结果。

如中所述,
execute()
返回布尔值。请查看的eamples,以了解您应该如何使用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...
}
编辑:
回应您的评论的其他信息:

对于
更新
删除
,您可以像您的示例那样使用一行代码,因为您可能不需要结果(或者只需要
/
来查看请求是否成功)


对于
选择
,您需要
fetch()
结果。您可以退出
bindParam()
,让参数执行,就像您尝试过的那样,但是如果没有
fetch()
,您将无法得到结果。

fetch()引发的错误是什么?对不起,我有一个对问题进行向下投票的策略,只要看一下手册就可以回答,这对我来说就是懒惰。所以不应该用它来代替阅读现成的文档。
fetch()
引发的错误是什么?对不起,我有一个否决问题的策略,只要看一下手册就可以回答,这对我来说就像是懒惰。所以不应该用它来代替阅读现成的文档。真不敢相信我错过了。在使用PDO之前,我从未使用SELECT和execute。现在我想否决我自己的问题。您的示例中有一个错误(
$sth->bind…
而不是
$stmt->bind…
),但我为您修复了它:-)thans nikc,我在从php.net复制和粘贴以构建适合该问题的示例时错过了这个错误;)真不敢相信我错过了。在使用PDO之前,我从未使用SELECT和execute。现在我想否决我自己的问题。您的示例中有一个错误(
$sth->bind…
而不是
$stmt->bind…
),但我为您修复了它:-)thans nikc,我在从php.net复制和粘贴以构建适合该问题的示例时错过了这个错误;)