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,我编辑了我的答案以提供可能的解决方案。请查看编辑字下方。不幸的是,数组到字符串的转换错误仍然存在