Php mysql_fetch_数组的嵌套While循环未按预期工作
我正在尝试为我的网站制作feed系统,在这个系统中,我使用Php mysql_fetch_数组的嵌套While循环未按预期工作,php,mysql,nested,while-loop,Php,Mysql,Nested,While Loop,我正在尝试为我的网站制作feed系统,在这个系统中,我使用mysql\u fetch\u arraysystem从数据库中获取数据,并为mysql\u fetch\u array创建了一个while循环,在这个循环中,我又重复了一个while循环,但问题是嵌套的while循环只执行一次,不重复行。。。。这是我用过的一些函数和OOP的代码,但你会明白这是什么意思! 我想到了一个替代方案,但还没有尝试vaz,我只想以这种方式解决问题,即使用for循环,而不是while循环,这可能会起作用 publi
mysql\u fetch\u array
system从数据库中获取数据,并为mysql\u fetch\u array
创建了一个while循环,在这个循环中,我又重复了一个while循环,但问题是嵌套的while循环只执行一次,不重复行。。。。这是我用过的一些函数和OOP的代码,但你会明白这是什么意思!
我想到了一个替代方案,但还没有尝试vaz,我只想以这种方式解决问题,即使用for循环,而不是while循环,这可能会起作用
public function get_feeds_from_my_friends(){
global $Friends;
global $User;
$friend_list = $Friends->create_friend_list_ids();
$sql = "SELECT feeds.id, feeds.user_id, feeds.post, feeds.date FROM feeds WHERE feeds.user_id IN (". $friend_list. ") ORDER BY feeds.id DESC";
$result = mysql_query($sql);
while ($rows = mysql_fetch_array($result)) {
$id = $rows['user_id'];
$dp = $User->user_detail_by_id($id, "dp");
$user_name = $User->full_name_by_id($id);
$post_id = $rows['id'];
$final_result = "<div class=\"sharedItem\">";
$final_result .= "<div class=\"item\">";
$final_result .= "<div class=\"imageHolder\"><img src=\"". $dp ."\" class=\"profilePicture\" /></div>";
$final_result .= "<div class=\"txtHolder\">";
$final_result .= "<div class=\"username\"> " . $user_name . "</div>";
$final_result .= "<div class=\"userfeed\"> " . $rows['post'] . "</div>";
$final_result .= "<div class=\"details\">" . $rows['date'] . "</div>";
$final_result .= "</div></div>";
$final_result .= $this->get_comments_for_feed($post_id);
$final_result .= "</div>";
echo $final_result;
}
}
public function get_comments_for_feed($feed_id){
global $User;
$sql = "SELECT feeds.comments FROM feeds WHERE feeds.id = " . $feed_id . " LIMIT 1";
$result = mysql_query($sql);
$result = mysql_fetch_array($result);
$result = $result['comments'];
$comment_list = get_array_string_from_feild($result);
$sql = "SELECT comment_feed.user_id, comment_feed.comment, comment_feed.date FROM comment_feed ";
$sql .= "WHERE comment_feed.id IN(" . $comment_list . ") ORDER BY comment_feed.date DESC";
$result = mysql_query($sql);
if(empty($result)){ return "";}
else {
while ($rows = mysql_fetch_array($result)) {
$id = $rows['user_id'];
$dp = $User->user_detail_by_id($id, "dp");
$user_name = $User->full_name_by_id($id);
return "<div class=\"comments\"><div class=\"imageHolder\"><img src=\"". $dp ."\" class=\"profilePicture\" /></div>
<div class=\"txtHolder\">
<div class=\"username\"> " . $user_name . "</div>
<div class=\"userfeed\"> " . $rows['comment'] . "</div>
<div class=\"details\">" . $rows['date'] . "</div>
</div></div>";
}
}
}
公共函数从我的朋友那里获取订阅源(){
全球$Friends;
全球$用户;
$friend_list=$Friends->create_friend_list_id();
$sql=“选择feeds.id、feeds.user\u id、feeds.post、feeds.date FROM feeds WHERE feeds.user\u id IN(“.$friend\u list.”)ORDER BY feeds.id DESC”;
$result=mysql\u查询($sql);
while($rows=mysql\u fetch\u array($result)){
$id=$rows['user_id'];
$dp=$User->User\u detail\u by\u id($id,“dp”);
$user\u name=$user->full\u name\u by\u id($id);
$post_id=$rows['id'];
$final_result=“”;
$final_result.=”;
$final_result.=”;
$final_result.=”;
$final_result.=''.$user_name.'';
$final_result.=''.$rows['post'].'';
$final_result.=''.$rows['date'.'';
$final_result.=”;
$final\u result.=$this->get\u comments\u for\u feed($post\u id);
$final_result.=”;
echo$最终结果;
}
}
公共函数获取订阅源的评论($feed\u id){
全球$用户;
$sql=“从feeds.id=“.feed\u id.”限制1的feeds中选择feeds.comments”;
$result=mysql\u查询($sql);
$result=mysql\u fetch\u数组($result);
$result=$result['comments'];
$comment\u list=get\u array\u string\u from\u feild($result);
$sql=“从注释提要中选择注释提要.user\u id、注释提要.comment、注释提要.date”;
$sql.=“其中comment_feed.id在(“.$comment_list.”)中按comment_feed.date DESC排序”;
$result=mysql\u查询($sql);
if(空($result)){return”“;}
否则{
while($rows=mysql\u fetch\u array($result)){
$id=$rows['user_id'];
$dp=$User->User\u detail\u by\u id($id,“dp”);
$user\u name=$user->full\u name\u by\u id($id);
返回“
“$user\u name。”
“$rows['comment']”
“$rows['date']”
";
}
}
}
内部循环在循环的第一次迭代中返回。你确定你应该循环吗?如果您确定它总是第一行,为什么不抓住第一行呢?这是因为您使用的是return
,这会阻止函数进一步执行。你想做的是
//...
else {
$out = '';
while ($rows = mysql_fetch_array($result)) {
$id = $rows['user_id'];
$dp = $User->user_detail_by_id($id, "dp");
$user_name = $User->full_name_by_id($id);
$out .= "<div class=\"comments\"><div class=\"imageHolder\"><img src=\"". $dp ."\" class=\"profilePicture\" /></div>
<div class=\"txtHolder\">
<div class=\"username\"> " . $user_name . "</div>
<div class=\"userfeed\"> " . $rows['comment'] . "</div>
<div class=\"details\">" . $rows['date'] . "</div>
</div></div>";
}
return $out;
}
/。。。
否则{
$out='';
while($rows=mysql\u fetch\u array($result)){
$id=$rows['user_id'];
$dp=$User->User\u detail\u by\u id($id,“dp”);
$user\u name=$user->full\u name\u by\u id($id);
$out.=”
“$user\u name。”
“$rows['comment']”
“$rows['date']”
";
}
退回$out;
}
切勿使用嵌套的while循环,它不会给出您期望的结果。按照以下方式执行,就像我在本脚本中所做的那样:
<?php
include('dbconnect.php');
$query = "SELECT * FROM tiles_categories" . " LIMIT 0, 3" ;
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)) { $category_id = $row["cat_id"] ;
echo "<div class='product'>";
echo "<h2 style='padding-bottom:10px; color:#6F0D00;'>". $row['cat_name'] . "</h2>";
gettiles($category_id);
echo"</div>";
}
function gettiles($category_id) {
$tiles_query = "SELECT * FROM tiles_info where cat_id = '".$category_id."'";
$result = mysql_query($tiles_query) or die(mysql_error());
while($row_tiles = mysql_fetch_array($result)) {
echo "<div align='center' style='float:left; width:100px; margin:0px 35px 0px 0px;'>";
echo "</div>";
}
}
?>
查看注释的不同功能有很多abt 3注释,其中一篇文章。。。我希望它们都是回显get_comments_中的查询,因为如果我在mysql控制台中运行它,feed会给出3行,所以plob是tht,而loop不循环,它只循环一次,然后移动到主循环,$post_id更改,所以我需要tht循环才能工作。我明白你的意思,但是tht循环本身也不能工作。你能做到吗查找?请使用mysqli
或PDO
而不是mysql。