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 に答える