【发布时间】:2014-11-16 16:39:16
【问题描述】:
我正在尝试以这种形式向管理员打印所有成员报告(投诉):
发件人姓名:...
被举报的用户名:...
首先我想直接从投诉表中选择每个发件人名称(使用for循环),然后找到匹配的报告用户名并以这种方式打印所有报告。 请注意,我没有将发件人姓名和报告的用户名保存在同一个表中,因此我需要执行 mysql join 才能找到报告的用户名。
<?php
$raw_results = mysql_query("SELECT * FROM complaint ");
$ln = mysql_num_rows($raw_results);
if($ln > 0){
$results = array();
$results = mysql_fetch_array($raw_results);
for($i=0;$i<$ln;$i++){
$SenderName = mysql_query("SELECT m_name FROM member WHERE (`m_id`LIKE '".$results[1]."') ");
$fetchA = mysql_fetch_array( $SenderName, MYSQL_ASSOC);
$ReportedUserId = mysql_query("SELECT r.d_id FROM ride r, complaint c WHERE r.r_id= c.r_id");
$fetchB = mysql_fetch_array($ReportedUserId , MYSQL_ASSOC);
//Afer finding ID I use it to select name
$dname = mysql_query("SELECT m_name FROM member WHERE (`m_id` LIKE '%".$fetchB['d_id']."%') ");
$fetchDname = mysql_fetch_array($dname, MYSQL_ASSOC);?>
<ul data-role="listview" data-divider-theme="d" data-inset="false">
<li data-role="list-divider" role="heading">
<?php echo 'From:'; ?>
<?php echo $fetchA['m_name']; ?></li>
<li data-theme="c" >
<?php echo 'Reported user Name: '; ?>
<?php echo $fetchDname['m_name']; ?>
</li>
</ul>
我从这段代码得到的输出是表格投诉的第一行打印了多次 ($ln) 次,例如:
- 纳达
- 阿里
- 纳达
- 阿里
....直到 $ln
为什么我使用循环时它没有转到下一行? 我尝试了数据库中的查询,它可以工作,所以问题不是来自 db。 如果需要,我准备写更多细节:)
我的架构:
Member(m_id, m_name, ...etc)
Ride(r_id, p_id ....etc) *p_id refers to m_id
Complaint(c_id, d_id ..etc)*d_id refers to m_id
the idea is member reports member in a ride
【问题讨论】:
-
您是否忘记关闭 For 循环的括号,或者您在此处复制粘贴时丢失了括号?
-
因为你只在循环外调用
mysql_fetch_array($raw_results)...!? -
不,只是在这里错过了
-
你这样做真的很糟糕。我的猜测是,您可以通过将投诉表和乘车表加入到您的成员表中,通过单个查询获得您所追求的所有数据。暂时忘记 PHP 代码,然后返回查看查询。
-
@Najd 如果您编辑问题以更好地向您展示表架构和示例数据,我想您会是更好的查询建议,并且可以摆脱所有嵌套循环的废话。
标签: php html mysql loops data-retrieval