Привет, ребята, у меня проблемы с PDO в php, поскольку ошибка, которую он возвращает, является неопределенным индексом. Код для функции и запроса и возврат результата:
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; }
Однако при запуске кода для индексной страницы я получаю сообщение об ошибке: 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'; }
мой вопрос, почему он бросает уведомление и как мне обойти эту проблему?
fetchAll
возвращает все результаты (потенциально несколько строк) в многомерном массиве :
array( 0 => array(/* first row */), 1 => array(/* second row */), ... )
Вот почему в массиве нет прямого 'name'
, оно должно быть [0]['name']
.
Или вы не должны fetchAll
, просто fetchAll
.