【发布时间】:2013-05-14 19:55:54
【问题描述】:
大家好,我对 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;
}
但是,在运行索引页面的代码时,我收到一条错误消息:Notice: Undefined index: name
索引的代码是这样的:
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';
}
我的问题是它为什么会发出通知,我该如何解决这个问题?
【问题讨论】:
-
$db = connect();是做什么的?你如何与db连接?错误的内容是什么?你放的细节太少了 -
检查您使用
var_dump($details);获得的内容。 注意: 在 echo 语句中 concat 与.(dot) 而不是, -
可能会抛出通知,因为没有正确的结果,并且在循环中您使用可能未分配的
$details['badges']等。正如@Rikesh 建议使用 var_dump 或 print_r($details) 并显示结果。 -
@Rikesh
,在echo语句中更可取,它使您可以将几个参数传递给echo,这些参数会按顺序回显。这比连接字符串然后echo将它们输出更有效。 -
@deceze - 我从来不知道。谢谢:)