当我的数据库行为空时,我收到这个恼人的错误, 但是这些行应该是空的,直到我添加一些值。 任何线索出了什么问题?我尝试通过在变量之前添加@来禁用此问题,但是当它们处于foreach循环时不起作用。
如果我向行添加数据,问题就会停止......
任何想法?
一些代码。
$tweets = new Tweets();
foreach($tweets->fetch_tweets($_GET['uid']) as $tweet){
@$tweet_name = $tweet['username'];
@$tweet_date= $tweet['date'];
@$tweet_email= $tweet['email'];
}
function fetch_tweets($uid){ /*Mine and users I follow*/
$uid = (int)$uid;
$query = $this->link->query("SELECT user.id,
user.email,
user.username,
tweets.message,
tweets.date,
userdetails.profile_img,
userdetails.firstname,
userdetails.lastname,
following.id, following.user_id,
following.follow_id
FROM user
LEFT JOIN following ON user.id = following.user_id
JOIN userdetails ON user.id = userdetails.user_id
JOIN tweets ON userdetails.user_id = tweets.user_id
WHERE user.id='{$uid}' OR
user.id IN (SELECT follow_id
FROM following
WHERE following.user_id = '{$uid}' ) GROUP BY tweets.date ORDER BY tweets.date DESC "
);
$tweet = array();
while(($row = $query->fetch(PDO::FETCH_ASSOC)) !==FALSE) {
$tweet[] = $row;
} echo $query->rowCount();
return $tweet;
}
答案 0 :(得分:2)
在尝试使用它之前,您需要检查返回的数组是否为空。
$tweets = new Tweets();
$res = $tweets->fetch_tweets($_GET['uid']);
if( empty($res) ) {
echo "no tweets.";
} else {
foreach($res as $tweet){
$tweet_name = $tweet['username'];
$tweet_date = $tweet['date'];
$tweet_email= $tweet['email'];
}
}
此外,您应该在调用之前声明您的函数。在大多数其他语言中,它不是PHP的要求,但它使您的代码更容易阅读。
答案 1 :(得分:0)
在获取行之前,只需运行一个代码来检查行数是否为0