我正在尝试运行这些SQL查询:
$sql2="SELECT * from client where parent_client_id = '".$result["customerid"]."' ";
$rs2=mysql_query($sql2,$pbx01_conn) or die(mysql_error());
while($result2=mysql_fetch_array($rs2)) {
$sql3="SELECT * from extension where client_id = '".$result2["id"]."' and type = 'term' ";
$rs3=mysql_query($sql3,$pbx01_conn) or die(mysql_error());
if(mysql_num_rows($rs3) > 0) {
$result3=mysql_fetch_array($rs3);
echo '<tr class="notfirst" style="cursor:pointer;" onclick="document.location=\'sip:'.$result["customerid"].'*'.$result3["number"].'\'">
<td>'.$result2["name"].'</td>
<td>'.$result["customerid"].'*'.$result3["number"].'</td>
<td>Phone Terminal</td>
</tr>';
}
$sql3="SELECT * from extension where client_id = '".$result2["id"]."' and type = 'queue' ";
$rs3=mysql_query($sql3,$pbx01_conn) or die(mysql_error());
if(mysql_num_rows($rs3) > 0) {
$result3=mysql_fetch_array($rs3);
echo '<tr class="notfirst" style="cursor:pointer;" onclick="document.location=\'sip:'.$result["customerid"].'*'.$result3["number"].'\'">
<td>'.$result2["name"].'</td>
<td>'.$result["customerid"].'*'.$result3["number"].'</td>
<td>Queue</td>
</tr>';
}
因此,如果在第一个$ sql3上返回了4行,那么应该是:
Phone Terminal
Phone Terminal
Phone Terminal
Phone Terminal
并且在第二个$ sql3上有1个返回它应该是:
Queue
但显示如
Phone Terminal
Phone Terminal
Phone Terminal
Queue
Phone Terminal
我做错了什么?
答案 0 :(得分:0)
只需检查何时连接字符串而不是回显,就会遇到同样的问题。
<?php
$sql2 = "SELECT * from client where parent_client_id = '".$result["customerid"]."' ";
$rs2 = mysql_query($sql2,$pbx01_conn) or die(mysql_error());
$rows = '';
while ($result2 = mysql_fetch_array($rs2)) {
$sql3 = "SELECT * from extension where client_id = '".$result2["id"]."' and type = 'term' ";
$rs3 = mysql_query($sql3,$pbx01_conn) or die(mysql_error());
if (mysql_num_rows($rs3) > 0) {
$result3 = mysql_fetch_array($rs3);
$rows .= '<tr class="notfirst" style="cursor:pointer;" onclick="document.location=\'sip:'.$result["customerid"].'*'.$result3["number"].'\'">
<td>'.$result2["name"].'</td>
<td>'.$result["customerid"].'*'.$result3["number"].'</td>
<td>Phone Terminal</td>
</tr>';
}
$sql3 = "SELECT * from extension where client_id = '".$result2["id"]."' and type = 'queue' ";
$rs3 = mysql_query($sql3,$pbx01_conn) or die(mysql_error());
if (mysql_num_rows($rs3) > 0) {
$result3 = mysql_fetch_array($rs3);
$rows .= '<tr class="notfirst" style="cursor:pointer;" onclick="document.location=\'sip:'.$result["customerid"].'*'.$result3["number"].'\'">
<td>'.$result2["name"].'</td>
<td>'.$result["customerid"].'*'.$result3["number"].'</td>
<td>Queue</td>
</tr>';
}
}
echo $rows;
?>
答案 1 :(得分:0)
你做错了很多事:
你不应该在循环中进行sql查询。这是因为在您的情况下,您可以同时使用JOIN和UNION来获得结果。表现也会更好。
您使用的mysql扩展程序是PHP5.5的弃用版本。您应该使用其他内容,例如PDO。
您显示的代码显然正好显示了您所看到的内容,并且这样做是正确的。 这是因为你这样做:
if(mysql_num_rows($ rs3)&gt; 0){
然后对于第二个查询再次执行此操作:
if(mysql_num_rows($rs3) > 0) {
代码贯穿两个if语句,因为两者都是真的,从而显示你看到的内容。您很可能同时拥有同一客户端的扩展名“term”和“queue”。 如果您不想同时显示同一客户端,请使用if else或continue;
答案 2 :(得分:0)
我通过在while循环中创建每个查询的变量来解决这个问题
然后在while循环之外,我完成了:
echo $term;
echo $queue;
echo $ivr;
echo $voicecentre;
echo $conference;
echo $callback;
echo $intercom;
echo $queuecentre;