Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP多次检索同一行,而不是检索表中的所有行_Php_Html_Mysql_Loops_Data Retrieval - Fatal编程技术网

PHP多次检索同一行,而不是检索表中的所有行

PHP多次检索同一行,而不是检索表中的所有行,php,html,mysql,loops,data-retrieval,Php,Html,Mysql,Loops,Data Retrieval,我正在尝试以以下形式打印所有成员向管理员投诉的报告: 发件人名称:。。。 报告的用户名: 首先,我想使用for循环直接从投诉表中选择每个发件人名称,然后找到匹配的报告用户名,并以这种方式打印所有报告。 请注意,我没有将发送者名称和报告的用户名保存在同一个表中,因此我需要执行mysql join以查找报告的用户名 <?php $raw_results = mysql_query("SELECT * FROM complaint "); $ln = mysql_num_rows($raw

我正在尝试以以下形式打印所有成员向管理员投诉的报告:

发件人名称:。。。 报告的用户名:

首先,我想使用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>

在循环的第一行中将$results[1]更改为$results[$i]。您没有在原始结果集上迭代。Move$results=mysql\u fetch\u array$raw\u results;在for循环内部,您应该开始看到所需的输出

然而,我想说的是,您可能希望通过使用JOIN语句将一些逻辑卸载到数据库中。很难说没有看到您的底层数据库模式,但是当一个数据库查询能够检索到您需要的数据时,使用多个数据库查询通常不是一个好主意


最后,mysql_fetch_数组语句已被弃用,因此您还应该研究PHP PDO或mysqli扩展的使用。

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
 "); 

现在我需要知道如何使用循环遍历它

您是否忘记关闭for循环的括号,或者在复制粘贴到此处时丢失了它?因为您只在循环外部调用mysql_fetch_array$raw_results。。。!?不,只是错过了这里,你真的做得很糟糕。我的猜测是,通过将投诉表和乘坐表连接到您的成员表,您可以通过一个查询获得所需的所有数据。暂时忘掉PHP代码,然后后退一步查看查询。@Najd如果您编辑问题以更好地显示表架构和示例数据,我认为您将是一个更好的查询建议,可以消除所有嵌套的无意义循环。我这样做了,它可以检索正确的发件人名称,但报告的用户名没有更改。您需要在查询中添加ReportedUserId,以包括和c.sender\u name=$SenderName之类的内容。同样,如果看不到您的底层数据库模式,就很难确定。不过,要重新讨论这个问题,您确实需要阅读有关连接数据库表的内容。这将使您的逻辑更简单,可能更快。换句话说,迈克·布兰特(Mike Brant)说你做这件事的方式很糟糕,他对此一窍不通。这里有一些好的起点。谢谢你的链接和完整的答案。
$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
 ");