【问题标题】:Php, PDO query, fetch all returns nothingPhp, PDO 查询, fetch all 返回什么
【发布时间】:2023-04-10 17:14:01
【问题描述】:

我正在尝试使用 fetchALL() 从 Select 语句中获取结果,但由于某种原因没有任何效果。以下是代码示例:

$vars = array(':name' => $_POST['name'], ':id' => $_POST['id']);

$stmt = $dbh->prepare("SELECT * FROM temp_table WHERE name=:name AND id=:id");

if($stmt->execute($vars)){
    if($stmt->fetchColumn() > 0){
        echo "Found";
        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
        print_r($result);
    }else{
        echo "Not found";
    }
}else{
    echo "Error";
}

语句成功执行,它找到了一列,就像它应该的那样,它回显“找到”,但数组出现为空,它只是出现array() 一切执行良好,只是获取,或fetchAll() 总是返回空。任何帮助将不胜感激!

【问题讨论】:

  • 如果您在 MySQL 监视器中运行该 SQL 语句,您会看到什么?多少行?
  • 假设您的查询只返回一行,fetch_column() 正在获取它以提取列数据。然后,当您调用 fetchAll() 时,数据已经被提取并且没有更多了。
  • ^ 你完全正确,我现在明白了,哈哈,谢谢大家

标签: php mysql database pdo


【解决方案1】:

您正在尝试在 fetchColumn 之后 fetchAll。

fetchColumn

从结果集的下一个行返回单列,如果返回 FALSE 没有更多的行了。

fetchAll

PDOStatement::fetchAll() 返回一个包含所有 结果集中剩余行。

所以,你可以这样重写。

 if($result = $stmt->fetchAll(PDO::FETCH_ASSOC)){
        echo "Found";
        print_r($result);
 }else{
        echo "Not found";
 }

【讨论】:

  • 就是这样,我在发布问题后立即就明白了,哈哈,但感谢您的帮助!并为正确答案 +1!
猜你喜欢
  • 1970-01-01
  • 2014-05-23
  • 2023-03-28
  • 2017-10-28
  • 2019-07-22
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多