PHP 数据库 PDO 连接

2021-12-26 00:00:00 database php pdo

嘿伙计们,我在使用 php 中的 PDO 时遇到了一些麻烦,因为它返回的错误是未定义的索引.函数和查询返回结果的代码是这样的:

Hey guys im having a little trouble with the PDO in php as the error it is returning is an undefined index. The code for the function and query and return of result is this:

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;  
}

但是,当运行索引页面的代码时,我收到一条错误消息:注意:未定义索引:名称

However when running the code for the index page i get an error that says 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';
}

我的问题是为什么它会发出通知,我该如何解决这个问题?

my question is why is it throwing a notice and how do i go around this problem?

推荐答案

fetchAll 返回多维数组中的所有结果(可能是多行)>:

fetchAll returns all results (potentially multiple rows) in a multidimensional array:

array(
    0 => array(/* first row */),
    1 => array(/* second row */),
    ...
)

这就是为什么数组没有直接索引'name',它需要是[0]['name'].
或者你不应该fetchAll,而是fetch.

That's why the array doesn't have a direct index 'name', it needs to be [0]['name'].
Or you shouldn't fetchAll, just fetch.

相关文章