为什么我的 SQL 执行(选择存在)函数总是返回 1?

我似乎无法弄清楚这段 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 的原因)。

陪伴而非守候
浏览 179回答 1
1回答

大话西游666

PDOStatement::execute()返回一个布尔值,成功时返回 TRUE,失败时返回 FALSE:https://www.php.net/manual/en/pdostatement.execute.php如果您想获取 SQL 语句执行返回的实际结果,而不是执行本身的状态,您应该使用其中一个函数,fetch*例如fetchColumn()after call execute()。
打开App,查看更多内容
随时随地看视频慕课网APP