2

このステートメントを使用して、データベースの列の要素を取得しています

$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;
}
}
4

1 に答える 1

7

あなたは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 を使用すると、結果を元のコードとしてバインドする必要はありません。

于 2012-11-08T20:27:49.453 に答える