【问题标题】:How do I use fetchAll in php?如何在 php 中使用 fetchAll?
【发布时间】:2012-10-29 02:59:47
【问题描述】:

我正在使用此语句来获取我的数据库中列中的元素

$result = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);

但我在尝试运行时收到此错误。

调用未定义的方法mysqli_stmt::fetchAll();

我需要在我的 php 文件中添加一些内容以包含该方法吗?

更新 1:

class LoginAPI
{
private $db;

function __construct() 
{
    $this->db = new mysqli('xxx', 'xxx', 'xxx', 'xxx');
    $this->db->autocommit(FALSE);
}

function __destruct() 
{
    $this->db->close();
}

function login() 
{
    if(isset($_POST["lang"]))
    {
        $stmt = $this->db->prepare("SELECT code FROM locations");
        $stmt->execute();
        $stmt->bind_result($code);

        //while($stmt->fetch())
        //{
        //  result[] = "code"=>$code;
        //  break;
        //}
        $codeArr = array();
        $result = $stmt->fetch_all();//|PDO::FETCH_GROUP;




        sendResponse(200, json_encode($result));
        return true;
    }
    sendResponse(400, 'Invalid Request');
    return false;
}
}

【问题讨论】:

  • 看起来你混合了 PDO 和 mysqli。如果您发布连接方式,它将显示您正在创建一个 mysqli 连接对象,而不是 PDO 语句。 mysqli 结果集对象具有 fetch_all() 而不是函数 fetchAll()。 fetchAll() 是 PDOStatement 类提供的函数。看到这个:php.net/manual/en/mysqli-result.fetch-all.php
  • 您使用的是PDO 还是mysqli?无论如何,您在这里将两者混合在一起。
  • 请查看us1.php.net/…
  • 这是我连接到数据库的方式 $this->db = new mysqli(...);

标签: php sql fetchall


【解决方案1】:

你正在使用 mysqli,你得到的是一个语句而不是一个结果。如果你有一个 mysqli_result 你可以使用方法fetch_all()

但是,由于这是一个 mysqli_stmt,您首先需要执行,然后在结果集上使用 fetch_all()。见下例

 $stmt = $this->db->prepare("SELECT code FROM locations");
 $stmt->execute();


//grab a result set
$resultSet = $stmt->get_result();

//pull all results as an associative array
$result = $resultSet->fetch_all();

注意:使用 fetch_all 您不需要将结果绑定为原始代码。

【讨论】:

  • 我将其更改为 fetch_all() ,现在该方法出现错误。我对这一切还是很陌生,如果我很愚蠢,很抱歉
  • @linuxer 你还在用php 5.3还是更早的版本
  • 调用未定义的方法mysqli_stmt::fetch_all() 我的PHP版本是5.3.15
  • @linuxer 好的,现在我看到了这个,我看到了更多的事情发生。你能说出你是如何创建连接并创建你的sql语句的吗?看起来您正在使用准备好的语句。如果是这样,您会调用执行吗?只需在您的示例中粘贴您使用的整个 mysqli 命令块
猜你喜欢
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
相关资源
最近更新 更多