我正在尝试使用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'];
对于经验丰富的人来说可能真的很难看,但它确实有效。再次感谢。
答案 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'];
}