出现这些错误的原因是什么?
Notice: Undefined index: photo
Notice: Undefined index: username
它们出现在while循环中,在'。$ row ['photo']上。和'。$ row ['用户名']。'
我只是在PHP页面上调用公共函数,如下所示。
<?php echo $userSuggestions($uiD); ?>
我在while循环中需要它的原因是我正在尝试使用PDO :: FETCH_ASSOC,因此它在回显时不会重复相同的结果。
我能够使用$row = $sth->fetch()
然后在php页面上调用它如下:$userSuggestions['photo'], $userSuggestions['Username']
但是这样我将无法循环它并检索不同的结果(不同的信息,而不是一遍又一遍地重复相同的信息。)
我已经搜索了各种线程,得出结论是需要isset(),但无法理解为什么在此查询中需要isset,如果有人能够解释我会很感激。 谢谢。
public function userSuggestions($uiD)
{
$sth = $this->db->prepare("
SELECT F.friend_two AS possible_friend, U.username, U.uiD, U.photo
FROM user_friends F, users U
WHERE F.friend_one IN (SELECT friend_two FROM user_friends WHERE friend_one = :uiD)
AND F.friend_two NOT IN (SELECT friend_two FROM user_friends WHERE friend_one = :uiD)
AND NOT F.friend_two = :uiD
AND U.uiD NOT IN (SELECT friend_two FROM user_friends WHERE friend_one = :uiD)
AND U.photo NOT IN (SELECT friend_two FROM user_friends WHERE friend_one = :uiD)
GROUP BY possible_friend
ORDER BY RAND()
");
$sth->execute(array(':uiD' => $uiD));
while($row = $sth->fetchAll(PDO::FETCH_ASSOC))
{
echo '
<div class="SuggestionsPhotoDiv">
<img src="'.$row['photo'].'" class="SuggestionsPhoto">
<span class="SuggestionsButton">
<a>Follow Me</a>
</span>
<span class="SuggestionsName">
<a>'.$row['username'].'</a>
</span>
</div>
'; return $row;
}
答案 0 :(得分:3)
解决方案1:
while($row = $sth->fetch(PDO::FETCH_ASSOC)){
// your current code here
}
这使用fetch
代替fetchAll
。 fetchAll
会返回 all 数组,这意味着当您尝试访问$row['username']
时,它不存在。
解决方案2:
$rows = $sth->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row){
// your current code here
}
这将输出作为数组数组然后遍历它们。
fetchAll
功能文档:http://php.net/manual/en/pdostatement.fetchall.php
这是您的fetchAll
输出:
array(2) {
[0]=> array(4) {
["possible_friend"]=> string(3)"154"
["username"]=> string(5) "Emily"
["uiD"]=> string(3) "151"
["photo"]=> string(96) "uploads/profilePictures/image2.jpg"
}
[1]=> array(4) {
["possible_friend"]=> string(3) "153"
["username"]=> string(5) "Emily"
["uiD"]=> string(3) "151"
["photo"]=> string(96) "uploads/profilePictures/image1.jpg"
}
}
您可以看到它正在输出所有结果,因此顶级数组中不存在username
键。