Ren*_*aro 2 php mysql pdo prepared-statement
我已决定将我的项目迁移到预准备语句,执行以下代码后出现错误:
$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'];
Run Code Online (Sandbox Code Playgroud)
错误返回:
Fatal error: Cannot use object of type PDOStatement as array in
/var/www/game/classes/Clan.class on line 689
Run Code Online (Sandbox Code Playgroud)
var_dump($ data)返回:
object(PDOStatement)[122]
public 'queryString' => string 'SELECT clanID FROM clan_users WHERE userID = :uid LIMIT 1' (length=57)
Run Code Online (Sandbox Code Playgroud)
$ uid的值是正确的,并且在mysql上手动选择将返回预期的行.我也试过换到
$data->fetch(PDO::FETCH_OBJ);
Run Code Online (Sandbox Code Playgroud)
但也没有工作.
有任何想法吗?提前致谢.
该$data变量只是声明.您实际上需要将结果$data->fetchAll()填充到这样的不同变量中
$data_array = $data->fetchAll();
Run Code Online (Sandbox Code Playgroud)
然后使用$ data_array,而不是$data直接使用.