Php PDO,MySQL SELECT语句返回布尔值true?
只是在MySQL语句中使用SELECT,尝试获取一个列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()只会抛出一个错误 我能做什么?这阻碍了我的整个项目,无论我往哪
$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复制和粘贴以构建适合该问题的示例时错过了这个错误;)