我正试图以这种形式向管理员打印所有成员报告(抱怨):
发件人姓名:...
报告的用户名:...
首先,我想直接从投诉表中选择每个发件人名称(使用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)次,如:
为什么它不会进入下一行虽然我使用循环? 我尝试了数据库中的查询,它的工作原理,所以问题不是来自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
答案 0 :(得分:0)
您没有迭代原始结果集。将$results = mysql_fetch_array($raw_results);
移到for
循环内部,您应该开始看到所需的输出。
但是,我想说,您可能希望使用JOIN
语句将一些逻辑卸载到数据库中。很难说没有看到你的底层数据库模式,但是当一个人能够检索你需要的数据时,通常不是一个好主意。
最后,不推荐使用mysql_fetch_array
语句,因此您还应该考虑使用PHP PDO或mysqli扩展。
答案 1 :(得分:0)
Awww我确实找到了查询伙伴谢谢你 就是这样
$name = mysql_query("SELECT m.m_name
FROM member m
INNER JOIN ride r
on m.m_id = r.d_id
INNER JOIN complaint c
on r.r_id = c.r_id
");
现在我需要知道如何使用循环来解决它
答案 2 :(得分:-1)
在循环的第一行将$ results [1]更改为$ results [$ i]。