Php 从sql结果中获取多个结果并放入foreach查询,得到数组到字符串的转换错误
现在是这样的新代码Php 从sql结果中获取多个结果并放入foreach查询,得到数组到字符串的转换错误,php,mysql,arrays,foreach,Php,Mysql,Arrays,Foreach,现在是这样的新代码 '" . mysqli_escape_string($con,$SN) . "' $con=mysqli_connect($localhost、$username、$password、'db'); //mysql选择查询 $query='从'list'中选择'SN',其中'Floor'类似于“LP60”和'type'类似于“pc”; $result=mysqli_query($con,$query)或die(mysqli_error()); while($row=mysql
'" . mysqli_escape_string($con,$SN) . "'
$con=mysqli_connect($localhost、$username、$password、'db');
//mysql选择查询
$query='从'list'中选择'SN',其中'Floor'类似于“LP60”和'type'类似于“pc”;
$result=mysqli_query($con,$query)或die(mysqli_error());
while($row=mysqli\u fetch\u assoc($result))
{
foreach(行作为$SN){
$sql=“从pcSN类似的pc中选择*”.mysqli\u escape\u字符串($con,$SN)。“'ORDER BY EvenID DESC LIMIT 1';
$get=mysqli\u查询($con,$sql);
而($get\u row=mysqli\u fetch\u assoc($get)){
回显“”;//打印表行
回显“.$get_row['xxx']”;
.
.
.
.
回显'.$get_行['yyy'].';
回显“”;//关闭表行
}
}
}
谢谢大家一直以来对我的帮助,我想把所有的点点滴滴都加起来,让一切变得更美好。
谢谢
希望这篇文章也能对其他人有所帮助您正在尝试使用数字索引访问关联数组中的值。改用列名
mysqli\u fetch\u assoc()
返回关联数组
而不是这个,
$con=mysqli_connect($localhost,$username,$password,'db');
// mysql select query
$query = 'SELECT `SN` FROM `list` WHERE `Floor` LIKE "LP60" AND `type`LIKE "pc"';
$result = mysqli_query($con,$query) or die(mysqli_error());
while($row = mysqli_fetch_assoc($result))
{
foreach ($row as $SN){
$sql = "SELECT * FROM pc WHERE pcSN LIKE '" . mysqli_escape_string($con,$SN) . "' ORDER BY EvenID DESC LIMIT 1";
$get = mysqli_query($con,$sql);
while ($get_row = mysqli_fetch_assoc($get)) {
echo '<tr>'; // printing table row
echo '<td>'.$get_row['xxx'].'</td>';
.
.
.
.
echo '<td>'.$get_row['yyy'].'</td>';
echo'</tr>'; // closing table row
}
}
}
试着用这个,
$get_row[1]
编辑
根据您关于仍然出现错误的评论,请尝试在$SN
和下一个串联顺序
之间添加空格。这可能会导致您的问题,因为当您回显sql语句时,那里没有空间
这个,
应该是,
...LIKE ArrayORDER BY...
所以改变你的说法
...LIKE Array ORDER BY...
通过在
'SELECT * FROM pc WHERE pcSN LIKE '.$SN.'ORDER BY EvenID DESC LIMIT 1'
您正在尝试使用数字索引访问关联数组中的值。改用列名
mysqli\u fetch\u assoc()
返回关联数组
而不是这个,
$con=mysqli_connect($localhost,$username,$password,'db');
// mysql select query
$query = 'SELECT `SN` FROM `list` WHERE `Floor` LIKE "LP60" AND `type`LIKE "pc"';
$result = mysqli_query($con,$query) or die(mysqli_error());
while($row = mysqli_fetch_assoc($result))
{
foreach ($row as $SN){
$sql = "SELECT * FROM pc WHERE pcSN LIKE '" . mysqli_escape_string($con,$SN) . "' ORDER BY EvenID DESC LIMIT 1";
$get = mysqli_query($con,$sql);
while ($get_row = mysqli_fetch_assoc($get)) {
echo '<tr>'; // printing table row
echo '<td>'.$get_row['xxx'].'</td>';
.
.
.
.
echo '<td>'.$get_row['yyy'].'</td>';
echo'</tr>'; // closing table row
}
}
}
试着用这个,
$get_row[1]
编辑
根据您关于仍然出现错误的评论,请尝试在$SN
和下一个串联顺序
之间添加空格。这可能会导致您的问题,因为当您回显sql语句时,那里没有空间
这个,
应该是,
...LIKE ArrayORDER BY...
所以改变你的说法
...LIKE Array ORDER BY...
通过在
'SELECT * FROM pc WHERE pcSN LIKE '.$SN.'ORDER BY EvenID DESC LIMIT 1'
这样做:
'SELECT * FROM pc WHERE pcSN LIKE '.$SN.' ORDER BY EvenID DESC LIMIT 1'
这样做:
'SELECT * FROM pc WHERE pcSN LIKE '.$SN.' ORDER BY EvenID DESC LIMIT 1'
而不是使用
while ($get_sn_row = mysqli_fetch_assoc($result)) {
$SN = $get_sn_row['SN'];
$get = mysqli_query($con,'SELECT * FROM pc WHERE pcSN LIKE '.$SN.'ORDER BY EvenID DESC LIMIT 1');
while ($get_row = mysqli_fetch_assoc($get)) {
...
}
}
使用
然后您将能够获得如下数据:
$get=mysqli_fetch_array...
而不是使用
while ($get_sn_row = mysqli_fetch_assoc($result)) {
$SN = $get_sn_row['SN'];
$get = mysqli_query($con,'SELECT * FROM pc WHERE pcSN LIKE '.$SN.'ORDER BY EvenID DESC LIMIT 1');
while ($get_row = mysqli_fetch_assoc($get)) {
...
}
}
使用
然后您将能够获得如下数据:
$get=mysqli_fetch_array...
我已经更改了每个列名,但问题仍然存在。当我回显mysqli_查询时,它将显示如下“从pc中选择*,其中pcSN类似EvenID DESC LIMIT 1的ArrayORDER”,但当我打印r($SN)和var_dump($SN)时,两者都可以显示单独的SNHey,我编辑了我的答案以提供可能的解决方案。请查看编辑字下方。不幸的是,数组到字符串的转换错误仍然存在。虽然每个列名都已更改,但问题仍然存在。当我回显mysqli_查询时,它将显示如下“从pc中选择*,其中pcSN类似EvenID DESC LIMIT 1的ArrayORDER”,但当我打印r($SN)和var_dump($SN)时,两者都可以显示单独的SNHey,我编辑了我的答案以提供可能的解决方案。请查看编辑字下方。不幸的是,数组到字符串的转换错误仍然存在