2

我决定将我的项目迁移到准备好的语句,执行以下代码后出现错误:

$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);

但也没有用。

有任何想法吗?提前致谢。

4

1 回答 1

6

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

$data_array = $data->fetchAll();

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

于 2012-08-30T21:51:26.983 回答