我正在尝试运行以下php代码:
$con = mysql_connect("localhost", "root", "") or die('connection not made');
$db = mysql_select_db('name', $con) or die('db not selected');
$query1 = "SELECT * FROM nodesensors WHERE NodeID=2";
$result1 = mysql_query($query1, $con);
$sensorids = mysql_fetch_array($result1);
$query2 = "SELECT SensorID, Variable FROM sensors WHERE SensorID IN($sensorids)";
$result2 = mysql_query($query2, $con) or die('query not made');
$sensors = mysql_fetch_array($result2);
echo $sensors;
我想只获得那些具有SensorID的传感器,这也是传感器中的一个值'阵列。 当我运行代码时,我得到以下内容:
Notice: Array to string conversion in C:\...\test.php on line 10
query not made
当我删除" $"如下:
$query2 = "SELECT SensorID, Variable FROM sensors WHERE SensorID IN(sensorids)";
通知消失了,但仍然没有进行查询。
'感应器的格式是否有任何问题?阵列
此外,是回声'提出数组的正确方法还是应该使用其他方法?
非常感谢!
答案 0 :(得分:5)
您不必使用implode
或其他任何内容,只需合并您的查询
SELECT SensorID, Variable FROM sensors WHERE SensorID IN
(
SELECT id FROM nodesensors WHERE NodeID=2
)
所有基于implode
的答案的备注:
只有在第一个查询中只选择了一列时才会有效,它们正在执行SELECT *
,这会产生一个多维数组,并且不包含传感器ID,因此会失败。请参阅 diEcho 更新的答案,详细了解该内容。
使用更新更安全的MySQL扩展程序
答案 1 :(得分:2)
我怀疑你可以在1个查询中执行此操作,但我不知道id
字段的名称,可能是SensorID
或其他内容。
$query2 =
"SELECT SensorID, Variable
FROM sensors
WHERE SensorID IN (
SELECT id
FROM nodesensors
WHERE NodeID=2
)";
$result2 = mysql_query($query2, $con) or die('query not made');
$sensors = mysql_fetch_array($result2);
可替换地:
$query2 =
"SELECT s.SensorID, s.Variable
FROM sensors AS s
INNER JOIN nodesensors ns ON ns.id = s.SensorID
WHERE ns.NodeID=2";
$result2 = mysql_query($query2, $con) or die('query not made');
$sensors = mysql_fetch_array($result2);
答案 2 :(得分:0)
修复
答案 3 :(得分:0)
试试这个,你就完成了, 请不要使用Select *,而是使用唯一的列包含senserid
<?php
$con = mysql_connect("localhost", "root", "") or die('connection not made');
$db = mysql_select_db('name', $con) or die('db not selected');
$query1 = "SELECT * FROM nodesensors WHERE NodeID=2";
$result1 = mysql_query($query1, $con);
$sensorids = mysql_fetch_array($result1);
$query2 = "SELECT SensorID, Variable FROM sensors WHERE SensorID IN(".implode(',',$sensorids).")";
$result2 = mysql_query($query2, $con) or die('query not made');
$sensors = mysql_fetch_array($result2);
echo $sensors;
?>
答案 4 :(得分:-1)
使用Implode
$sensorids = implode(',',$sensorids);
$query2 = "SELECT SensorID, Variable FROM sensors WHERE SensorID IN($sensorids)";