我有许多具有相同专业知识的记录,每当我搜索时它只给出一个结果,而$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> <?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 @
<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 @
<i class="fa fa-circle-thin"></i> 12pt
</a>
</span>
</p>
</div>
</td>
</tr>
</div><!--/col-9-->
</tbody>
</table>
<?php } } ?>
答案 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'];
}