嘿,伙计们,我在php的PDO有一点麻烦,因为它返回的错误是一个未定义的索引。函数、查询和返回结果的代码如下:
function getUserDetails($user) {
$db = connect();
try {
$stmt = $db->prepare('SELECT name,addr AS address,team
FROM TreasureHunt.Player LEFT OUTER JOIN TreasureHunt.MemberOf ON (name=player)
LEFT OUTER JOIN TreasureHunt.PlayerStats USING (player)
WHERE name=:user');
$stmt->bindValue(':user', $user, PDO::PARAM_STR);
$stmt->execute();
$results = $stmt->fetchAll();
$stmt->closeCursor();
} catch (PDOException $e) {
print "Error : " . $e->getMessage();
die();
}
return $results;
}
然而,当运行代码的索引页,我得到一个错误,说通知:未定义的索引:名称
索引的代码是:
try {
$details = getUserDetails($_SESSION['player']);
echo '<h2>Name</h2> ',$details['name'];
echo '<h2>Address</h2>',$details['address'];
echo '<h2>Current team</h2>',$details['team'];
echo '<h2>Hunts played</h2> ',$details['nhunts'];
echo '<h2>Badges</h2>';
foreach($details['badges'] as $badge) {
echo '<span class="badge" title="',$badge['desc'],'">',$badge['name'],'</span><br />';
}
} catch (Exception $e) {
echo 'Cannot get user details';
}
我的问题是为什么它抛出一个通知,我如何解决这个问题?
fetchAll
返回所有结果(可能为多行)在多维数组:
array(
0 => array(/* first row */),
1 => array(/* second row */),
...
)
这就是为什么数组没有直接索引'name'
,它需要是[0]['name']
。
或者你不应该fetchAll
,只应该fetch
。