gpt4 book ai didi

php - 使用 PHP 数组输出 MySQL 查询 - foreach 循环错误 "illegal offset"和 "invalid argument"

转载 作者:行者123 更新时间:2023-11-30 21:39:58 27 4
gpt4 key购买 nike

为了让这个更容易理解,我减少了这个例子而不是我正在使用的实际代码,但我知道问题出在哪里,我只是不确定如何使用 foreach 来输出我的 MySQL 查询的结果。

我有一个类似这样的数组

$thetablestructure = array(
array('tableheader' => 'header 1', 'tablevalue' => 'value1'),
array('tableheader' => 'header 2', 'tablevalue' => 'value2'),
);

我希望 HTML 输出是这样的:

<table>
<tr>
<th>header 1</th>
<th>header 2</tth>
</tr>
<tr>
<td>value 1</td>
<td>value 2</td>
</tr>
</table>

这是我尝试使用的代码,错误提示非法字符串偏移量和非法值:

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$keywords = $_REQUEST['keywords'];

$sql = "SELECT * FROM `stock` WHERE `model` LIKE '%$keywords%'";
$result = $conn->query($sql);

$thetablestructure = array(
array('tableheader' => 'Header 1', 'tablevalue' => 'value1'),
array('tableheader' => 'Header 2', 'tablevalue' => 'value2'),
);

echo "<table><tr>";

foreach ($thetablestructure as $thetablestructure) {
echo "<th>".$thetablestructure[tableheader]."</td>";
}

echo "</tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo('<tr>');
foreach ($thetablestructure as $thetablestructure) {
echo "<td>".$row["$thetablestructure[tablevalue]."]."</td>";
}

echo('</tr>');

}
echo "</table>";
$conn->close();

最初这是我使用的代码,在尝试对其进行简化和压缩之前:

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

// Retrieve keyword for MySQL query and search database
$keywords = $_REQUEST['keywords'];

$sql = "SELECT * FROM `stock` WHERE `model` LIKE '%$keywords%'";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
echo "
<table>
<tr>
<th>Heading 1</th>
<th>Heading 2</th>
</tr>";

// output data of each row
while($row = $result->fetch_assoc()) {
echo('<tr>');
echo "<td>".$row["$thetablestructure[tableheader]"]."</td>";
echo "<td>".$row["value2"]."</td>";
echo('</tr>');
}

echo "</table>";

} else {
echo "<p>0 results for ".$keywords."
}
$conn->close();

希望这是有道理的,有人可以帮助我。

最佳答案

你犯了以下错误,关键表头是一个字符串,所以你必须使用“'”,另外,你在foreach中使用了与数组'$thetablestructure'相同的名称

foreach ($thetablestructure as $v) {
echo "<th>{$v['tableheader']}</td>";
}

接下来对于你每次使用string作为变量,还有其他的错误,我建议你先隔离在$v这样的一个变量中再尝试使用。

 while($row = $result->fetch_assoc()) {
echo('<tr>');
foreach ($thetablestructure as $t) {
$v =$t['tablevalue'];
echo "<td>".$row[$v]."</td>";
}

echo('</tr>');
}

只是观察,如果你在代码中专门调用'value1'和'value2',有时比你使用$thetablestructure这样的结构来动态构建你想要的任何东西更好维护,同时更容易理解.

关于php - 使用 PHP 数组输出 MySQL 查询 - foreach 循环错误 "illegal offset"和 "invalid argument",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52079118/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com