尝试使用另一个表中的值搜索一个表

时间:2013-03-30 20:43:52

标签: php sql

我正在尝试使用SQL数据库在PHP中编写查找工具。

$sql="SELECT  
         ID, 
         switch, 
         vlan, 
         circuit_id 
      FROM vlan 
      WHERE switch 
      LIKE LOWER('%" . $name .  "%') OR vlan='" . $name ."' 
      ORDER BY vlan";

然后再向下我将结果放入变量:

while($row=mysql_fetch_array($result)){
      $switch  =$row['switch'];
      $vlan=$row['vlan'];
      $circuitID=$row['circuit_id'];
      $ID=$row['ID'];

我想要做的是接受交换机回复并使用它在另一个名为router的表上进行另一个查询并返回该信息。

我已经搜索了几天,我的所有搜索都在这里结束,但似乎并不合适。我赞成你能给予的任何帮助。

更新 通过一些很好的答案,我终于得到了这个工作。我就是这样做的。谢谢你的帮助。

while($row=mysql_fetch_assoc($result)){
      $switch  =$row['switch'];
      $vlan=$row['vlan'];
      $circuitID=$row['circuit_id'];
      $ID=$row['ID'];
      $sql2 = "SELECT IPAddress FROM router 
                WHERE switch LIKE '%".$switch."%'
                LIMIT 1";         
      $result2 = mysql_query($sql2);
      $row2=mysql_fetch_array($result2);
      $IPAddress = $row2['IPAddress'];

对于经验丰富的人来说可能真的很难看,但它确实有效。再次感谢。

2 个答案:

答案 0 :(得分:0)

您期望多少结果?如果有多个结果,您可能需要准确指出要采用的行。由于它是fetch_array,你的$ row ['switch']或$ switch值仍然是一个数组。 var_dump用于密钥并使用密钥,即

SELECT `col` FROM `router` WHERE `switch` = '$switch[1]'

答案 1 :(得分:0)

在循环中运行辅助查找查询非常低效。

根据JOIN字段,您想要的是两个表之间的简单switch。这样做会将router表格中的关联行与vlan表格中switch列中的值匹配的行对齐:

$sql = '
    SELECT   a.id, a.switch, a.vlan, a.circuit_id, b.ipaddress
    FROM     vlan a
    JOIN     router b ON a.switch = b.switch
    WHERE    a.switch LIKE "%' . strtolower($name) . '%" OR vlan = "' . $name . '"
    ORDER BY a.vlan';

然后在同一个获取循环中,您将能够访问router表中的链接值,而无需运行额外的数据库调用:

while($row=mysql_fetch_array($result)){
     $switch  =$row['switch'];
     $vlan=$row['vlan'];
     $circuitID=$row['circuit_id'];
     $ID=$row['ID'];
     $ipaddress = $row['ipaddress'];
}