首页 > 解决方案 > 在我的语句中使用布尔值时函数总是返回 false

问题描述

$firstTime = 'SELECT first_time FROM tbl_user WHERE user_id = :id';

$FTQuery = $pdo->query($firstTime);
$bool = bool($FTQuery);
if($bool>0){
    redirect_to('./admin_edit.php');
} else {
    redirect_to('index.php');
}

我找不到如何从我的数据库中提取它并将布尔值用于语句的答案,我正在尝试 var_dump 因为我在类似的帖子中看到它可以解决问题,但它没有。尝试使用 $FTQuery 变量作为语句,例如

if($FTQuery>0)

但这行不通。

标签: phpmysqlpdo

解决方案


PDO::query()返回一个PDOStatement对象。如果要从数据库中获取值,请fetchColumn()在该对象上使用。此外,您有一个未填充的占位符,因此您甚至不应该使用query(),而是execute()在准备好的语句上使用。不需要转换为布尔值;PHP 会自动执行此类操作。

$stmt = $pdo->prepare('SELECT first_time FROM tbl_user WHERE user_id = :id');
$stmt->execute(["id" => $id]);
$value = $stmt->fetchColumn();
redirect_to( $value ? './admin_edit.php' : 'index.php' );

推荐阅读