我似乎无法弄清楚这段 PHP 代码有什么问题:$sql = $db->prepare("SELECT EXISTS(SELECT 1 FROM profile WHERE uid = ?)");
$p_already_exists = $sql->execute([$_SESSION['uid']]);我正在运行 sqlite3 PDO 模块,无论“uid”是否在数据库中,$p_already_exists 始终被分配为 1。如果它不在数据库中,我希望它为 0,如果数据库中至少有一条记录,则为 1。我已经仔细检查过,回显 $_SESSION['uid'] 为我提供了与数据库中的 uid (TEXT) 相同的值。有谁知道为什么这对我不起作用?归根结底,我只是在寻找一种返回布尔值的有效方法(这就是为什么我不使用 COUNT 的原因)。
1 回答

大话西游666
TA贡献1817条经验 获得超14个赞
PDOStatement::execute()
返回一个布尔值,成功时返回 TRUE,失败时返回 FALSE:
https://www.php.net/manual/en/pdostatement.execute.php
如果您想获取 SQL 语句执行返回的实际结果,而不是执行本身的状态,您应该使用其中一个函数,fetch*
例如fetchColumn()
after call execute()
。
- 1 回答
- 0 关注
- 178 浏览
添加回答
举报
0/150
提交
取消