我在搜索过程中只得到一个结果


i am getting only one result during search,

我有很多具有相同专业知识的记录,每当我搜索时,它只给出一个结果,而$exp的值是数组。假设 $exp=数组();我已经尝试过我的代码,下面给出了我使用foreach()

提交
<?php if(isset($_POST['submit'])){
echo $exp=$_POST['expertise'];
$sq=mysql_fetch_assoc(mysql_query("select distinct(requirement_id) from requirement where label_value='$exp'"));
foreach($sq as $ii){
echo $query1 = "SELECT u.`users_id`, u.`name`, u.`email`, u.`phone`, re.`label_name`, re.`label_value`, re.`requirement_id`, re.`date` FROM users u INNER JOIN requirement re ON u.`users_id`=re.`users_id` WHERE  re.`requirement_id`='$ii'";
$query=mysql_query($query1);
$resultArr = array(); //to store query result
while($row=mysql_fetch_assoc($query))
{
    $resultArr[] = $row;
} 
//print_r($resultArr);
?>
<table class="table table-hover">
<tbody>
<?php
$tempUserID = "";
$tempEmail = "";
$tempPhone = "";
$tempReqID = 0; 
for($i=0;$i<count($resultArr);$i++)
{
    //if user id is blank, assign temporary values we need only for one time.
    if($tempUserID=="")
    {
        $tempUserID = $resultArr[$i]['users_id'];
        $tempEmail = $resultArr[$i]['email'];
        $tempPhone = $resultArr[$i]['phone'];
         $tempReqID = $resultArr[$i]['requirement_id'];
        //printing first row
        ?>
        <tr>
        <td>
            <div class="row" style="background: #00ACFF; ">
                <p style="padding: 10px;margin: 0;color: white;">
                    <i class="fa fa-user"></i>
                    <strong> <?=$resultArr[$i]['name']?> </strong>
                    <span style="font-size:85%;"><?=$resultArr[$i]['users_id']?>000<?=$tempReqID?></span>
                    <span class="pull-right">
                        <i class="fa fa-clock-o"></i> <?=$resultArr[$i]['date']?>
                    </span>
                </p>
            </div>
            <div class="row" style="background: #EDFEAF; min-height:80px;">
                *Looking For<br>->
        <?php
} 
    //ok
    if($tempUserID == $resultArr[$i]['users_id'] &&  $tempReqID==$resultArr[$i]['requirement_id'])
    {
        //printing label_name and label_value if users_id is equal to the tempuserid
        ?>
                <br>
                 <?=$resultArr[$i]['label_name']?>: <?=$resultArr[$i]['label_value']?>
                <br>
        <?php
    } 
    else
    {
        //if users_id is not equal to the previous one, we will close the first row(i.e.<tr>) and start a new one
        ?>
        </div>
        <div class="row" style="background: #00ACFF; ">
                <p style="padding: 10px;margin: 0;color: white;">
                    <i class="fa fa-envelope"></i>&nbsp;<?php echo $email =  substr_replace($tempEmail,"xxxxxxxxxx",3,10);?>
                    <!--<i class="fa fa-envelope"></i> <?php //$tempEmail?>-->
                    <i class="fa fa-mobile" style="margin-left:20px"></i>
                    <strong><?php echo $var1 =substr_replace($tempPhone, str_repeat("X", 6), 2, 6);?> </strong>
                  <span class="pull-right">
                  <a class="btn btn-default btn-xs" href="#">
                      View @&nbsp;&nbsp;&nbsp;
                      <i class="fa fa-circle-thin"></i> 12pt
                  </a>
                  </span>
                </p>
            </div>
        </td>
    </tr>
        <?php
        //since the users_id is not equal to the previous row, which means that data about new user is available, we will assign new values to temporary variables and start a new table row.
        $tempUserID = $resultArr[$i]['users_id'];
        $tempEmail = $resultArr[$i]['email'];
        $tempPhone = $resultArr[$i]['phone'];
        $tempReqID = $resultArr[$i]['requirement_id'];
        ?>
        <tr>
        <td>
            <div class="row" style="background: #00ACFF; ">
                <p style="padding: 10px;margin: 0;color: white;">
                    <i class="fa fa-user"></i>
                    <strong> <?=$resultArr[$i]['name']?> </strong>
                    <span style="font-size:85%;"><?=$resultArr[$i]['users_id']?>000<?=$tempReqID?></span>
                    <span class="pull-right">
                        <i class="fa fa-clock-o"></i> <?=$resultArr[$i]['date']?>
                    </span>
                </p>
            </div>
           <!--the edited part -->
             <div class="row" style="background: #EDFEAF; min-height:80px;">
                *Looking For<br>->
                 <br>
                 <?=$resultArr[$i]['label_name']?>: <?=$resultArr[$i]['label_value']?>
                <br>
        <?php
    }
} 
?>
<!--we will close the table row if current row is the last one in the result-->
<div class="row" style="background: #00ACFF; ">
                <p style="padding: 10px;margin: 0;color: white;">
                    <i class="fa fa-envelope"></i> <?php echo $email =  substr_replace($tempEmail,"xxxxxxxxxx",3,10);?>
                    <i class="fa fa-mobile" style="margin-left:20px"></i>
                    <strong> <?php echo $var1 =substr_replace($tempPhone, str_repeat("X", 6), 2, 6); ?></strong>
                  <span class="pull-right">
                  <a class="btn btn-default btn-xs" href="#">
                      View @&nbsp;&nbsp;&nbsp;
                      <i class="fa fa-circle-thin"></i> 12pt
                  </a>
                  </span>
                </p>
            </div>
        </td>
    </tr>


        </div><!--/col-9-->
        </tbody>
</table>    
<?php } } ?>

首先,不要使用 mysql_*,有关更多信息,请参阅这篇文章。

除此之外,您不能将用户数据直接粘贴到查询中,这是不安全的,想象一下有人输入类似"1;删除表要求"。

要回答您的问题,您不能将数组直接粘贴到查询中$exp因此它不是数组(除非您现在遇到错误)。

如果你实际上有一个数组作为$exp,使用 foreach-loop 将数组重写为字符串,这样你得到的东西

select distinct(requirement_id) from requirement where label_value IN(1,2,3)

您使用的mysql_fetch_assoc的问题。mysql_fetch_assoc将返回一个与读取的行对应的关联数组,并将内部数据指针向前移动。

由于您没有迭代,因此将返回当前指针的关联数组。

如果您仍然需要按foreach使用或直接使用while,您可以按如下方式使用

$result = mysql_query("select distinct(requirement_id) from requirement     where label_value='$exp'");
while($row = mysql_fetch_assoc($result))// this will iterate the pointer 
{
    $sq[] = $row['requirement_id'];
}