如何使用 php 在一个 mysql 查询中运行两个循环


How to run two loops in one mysql query with php

嗨,朋友们,我有两个数组一个来自数据库

$row1 = mysqli_fetch_array($result1);
          $alluser = $row1['user_id'];

另一个是关联数组

 $inputArray["NoContact"] = " and candidate_joborder.status='100'";
 $inputArray["Contacted"] = " and candidate_joborder.status='200'";
 $inputArray["Qualifying"] = " and candidate_joborder.status='300'";
 $inputArray["Submitted"] = " and candidate_joborder.status='400'";
 $inputArray["Interviewing"] = " and candidate_joborder.status='500'";
 $inputArray["Offered"] = " and candidate_joborder.status='600'";
 $inputArray["ClientDeclined"] = " and candidate_joborder.status='700'";
 $inputArray["Placed"] = " and candidate_joborder.status='800'";
 $inputArray["NoStatus"] = " and candidate_joborder.status='0'";
 $inputArray["NotInConsideration"] = " and candidate_joborder.status='650'";
 $inputArray["Candidate Responded"] = " and candidate_joborder.status='250'";

这里的 MYSQL 查询如下所示:

SELECT count(candidate_joborder.joborder_id) as counts FROM candidate_joborder JOIN joborder ON joborder.joborder_id = candidate_joborder.joborder_id where candidate_joborder.added_by= $alluser and candidate_joborder.status = $inputArray

在这里我需要这样的

<table border =1>
  <tr>
    <th>user name</th> 
    <th>No_Contact</th>
    <th>Contacted</th>
    <th>Qualifying</th>
    <th>Submitted</th>
    <th>Interviewing</th>
    <th>Offered</th>
    <th>Client_Declined</th>
    <th>Placed</th>
    <th>No_Status</th>
    <th>Not in Consideration</th>
    <th>Candidate_Responded</th>
  </tr>

列和行基于查询执行

同样在"用户名"列中将包含$alluser值在这里,我已经尝试过使用 PHP Foreach,但我无法得到任何想法,现在请帮助我任何人

在这里,我使用 foreach 循环来获取我的代码下面的关联数组值 它仅适用于关联数组

foreach($inputArray as $x => $x_value)
        {
            //concatenates the SQL query with its status through the temporary variable
                $temp = $sql . $x_value;
            //executes the sql query and returns the resultset
                $resultSet = mysqli_query($con,$temp);
            //assigns the returned rows in the resultset to the variable using the mysqli_fetch_array()
                $row = mysqli_fetch_array($resultSet);
            //assigns the count to the second array for all the status using the index
                $outputArray[$x]=$row['counts'];
        }
        echo "<table align = center border =1><tr>";
        //foreach loop which loops through outputArray
        foreach($outputArray as $x => $x_value)
        {
            echo '<th>'.$x .'</th>';
        }
        echo "</tr><tr>";
        //foreach loop which loops through outputArray
        foreach($outputArray as $x)
        {
            echo '<td>'.$x .'</td>';
        }
        echo "</tr></table>";

实际上在这里我正在使用$sql变量连接 MYSQL 查询在这里我连接$sql而不$alluser 喜欢 mysql

SELECT candidate_joborder.joborder_id as counts,joborder.title as title FROM candidate_joborder JOIN joborder ON joborder.joborder_id = candidate_joborder.joborder_id where candidate_joborder.status= **$x_value**

看起来您希望返回一行,其中包含该行中每个状态的计数。

如果是这样,可以这样做:-

SELECT SUM(IF(candidate_joborder.status='100', 1, 0)) AS NoContact,
        SUM(IF(candidate_joborder.status='200', 1, 0)) AS Contacted,
        SUM(IF(candidate_joborder.status='300', 1, 0)) AS Qualifying,
        SUM(IF(candidate_joborder.status='400', 1, 0)) AS Submitted,
        SUM(IF(candidate_joborder.status='500', 1, 0)) AS Interviewing,
        SUM(IF(candidate_joborder.status='600', 1, 0)) AS Offered,
        SUM(IF(candidate_joborder.status='700', 1, 0)) AS ClientDeclined,
        SUM(IF(candidate_joborder.status='800', 1, 0)) AS Placed,
        SUM(IF(candidate_joborder.status='0', 1, 0)) AS NoStatus,
        SUM(IF(candidate_joborder.status='650', 1, 0)) AS NotInConsideration,
        SUM(IF(candidate_joborder.status='250', 1, 0)) AS Candidate Responded
FROM candidate_joborder 
JOIN joborder 
ON joborder.joborder_id = candidate_joborder.joborder_id 
WHERE candidate_joborder.added_by= $alluser 

但这对于单个用户来说似乎毫无意义,最好返回多行,每个状态一行并循环结果:-

SELECT candidate_joborder.status, 
        COUNT(*) 
FROM candidate_joborder 
JOIN joborder 
ON joborder.joborder_id = candidate_joborder.joborder_id 
WHERE candidate_joborder.added_by= $alluser 
AND candidate_joborder.status IN ('100', 200','300', '400', '500', '600', '700', '800', '0', '650', '250')
GROUP BY candidate_joborder.status

两个数组都是PHP的(它们是否从DB填充无关紧要(,这是在服务器端,你需要形成HTML代码(在客户端执行(。

使用

foreach 为了迭代所需的数组,然后使用 echo 形成您的 HTML 输出。