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

时间:2016-03-15 08:52:25

标签: php mysql

我有许多具有相同专业知识的记录,每当我搜索时它只给出一个结果,而$exp的值是数组。 假设$ exp = array(); 我尝试过我的代码,下面给出了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 } } ?>

2 个答案:

答案 0 :(得分:0)

首先,不要使用mysql_ *,有关详细信息,请参阅this帖子。

除此之外,您无法将用户数据直接粘贴到查询中,这是不安全的,想象某人输入类似&#34; 1的内容; DROP TABLE要求&#34;。

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

如果你实际上有一个数组作为$ exp,使用foreach循环将数组重写为一个字符串,这样就可以得到类似

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

答案 1 :(得分:0)

您使用的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'];
}