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

标签 php mysql arrays foreach

$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

                }
}

我测试了两个查询都工作正常,也测试了 print_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

}
}
}

感谢大家一直在这里帮助我,我想把所有的点点滴滴都加起来让它成为世界。 谢谢 希望这篇文章也能对其他人有所帮助

最佳答案

您正在尝试使用数字索引访问关联数组中的值。请改用列名。 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'

关于php - 从 sql 结果中获取多个结果并放入 foreach 查询中,得到数组到字符串的转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48282608/

相关文章:

php - 最佳数据库(MySQL)结构 : Articles which contain favored tags

MySql 错误 1064 - 恢复数据库

php - 无法在 MYSQL 中获取 SUM()

PHP:array_search 返回 null

PHP:如何将变量放入数组中?

javascript - 在特定 div 之前插入/添加要填充的内容的新 div

php - 关系数据库 - 在下拉列表中发送 id 值

php - 使用 PHP 将 JSON POST 记录到文件

mysql - Wordpress.com 是否为所有用户使用一组表?

c - 使用数组和随机数循环打印一个简单的 5 x 5 板