php—从sql结果中获取多个结果并放入foreach查询,得到数组到字符串的转换错误

fkaflof6  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(283)
$con=mysqli_connect($localhost,$username,$password,'db');

$query = 'SELECT  `SN` FROM `list` WHERE `Floor` LIKE "LP60" AND `type`LIKE "pc"';
$result = mysqli_query($con,$query) or die(mysqli_error());

foreach ($result as $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)) {
                echo '<tr>'; // printing table row
                echo '<td id="ID">'.$get_row[0].'</td>';
                echo '<td>'.$get_row[1].'</td>';
                echo '<td>'.$get_row[2].'</td>';
                echo '<td>'.$get_row[3].'</td>';
                echo '<td>'.$get_row[4].'</td>';
                echo '<td>'.$get_row[5].'</td>';
                echo '<td>'.$get_row[6].'</td>';
                echo '<td>'.$get_row[7].'</td>';
                echo '<td>'.$get_row[8].'</td>';
                echo '<td>'.$get_row[9].'</td>';
                echo '<td>'.$get_row[10].'</td>';
                echo '<td>'.$get_row[11].'</td>';
                echo '<td>'.$get_row[12].'</td>';
                echo '<td>'.$get_row[13].'</td>';
                echo '<td>'.$get_row[14].'</td>';
                echo'</tr>'; // closing table row

                }
}

我已经测试了两个查询工作正常,已经测试了打印\r($sn)以及,但在最后我得到了数组到字符串转换错误,请任何帮助
我通过使用

'" . mysqli_escape_string($con,$SN) . "'

现在像这样的新代码

$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

}
}
}

谢谢大家一直以来对我的帮助,我想把所有的点点滴滴都加起来,让一切都变好了。谢谢,希望这篇文章也能对其他人有所帮助

fnatzsnv

fnatzsnv1#

这样做:

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)) {
        ...
   }
}
u4dcyp6a

u4dcyp6a2#

而不是使用

$get=mysqli_fetch_assoc...

使用

$get=mysqli_fetch_array...

然后你就能得到这样的数据:

echo $get[0];
o7jaxewo

o7jaxewo3#

您正在尝试使用数字索引访问关联数组中的值。改用列名。 mysqli_fetch_assoc() 返回关联数组。
而不是这个,

$get_row[1]

试着用这个,

$get_row['column_name']

编辑
根据您关于仍然出现错误的评论,请尝试在 $SN 下一个连接 ORDER . 这可能会导致您的问题,因为当您回显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'

相关问题