PDO(Prepared Statement)错误-无法将PDOStatement类型的对象用作数组


Error with PDO (Prepared Statement) - Cannot use object of type PDOStatement as array

我决定将我的项目迁移到准备好的语句中,在执行以下代码后我遇到了一个错误:

$sql = 'SELECT clanID FROM clan_users WHERE userID = :uid LIMIT 1';
$data = $this->pdo->prepare($sql);
$data->execute(array(':uid' => $uid));
$data->fetchAll();
return $data['0']['clanid'];

返回错误:

 Fatal error: Cannot use object of type PDOStatement as array in
/var/www/game/classes/Clan.class on line 689

var_dump($data)返回:

object(PDOStatement)[122]
    public 'queryString' => string 'SELECT clanID FROM clan_users WHERE userID = :uid LIMIT 1' (length=57)

$uid的值是正确的,在mysql中手动选择会返回期望的行。我还试着换成

$data->fetch(PDO::FETCH_OBJ);

但也没用。

有什么想法吗?提前谢谢。

$data变量只是语句。实际上,您需要将$data->fetchAll()的结果填充到不同的变量中,如

$data_array = $data->fetchAll();

然后使用$data_array,而不是直接使用$data