我有一个简单的表单,旨在允许用户输入数值,然后将它们发送到计算结果的页面。
我遇到的问题是,其名称中包含空格的帖子变量似乎无法识别。
表单的创建方式如下:
<?php
$minerals = mysqli_query($con, "SELECT * FROM items");
?>
<table border='1'>
<tr>
<td>Product: </td>
<td>Quanitity: </td>
<td>Buyback Price: </td>
</tr>
Minerals
</br>
</br>
<?php
while($row = mysqli_fetch_array($minerals)) {
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . "Amount: <input type='text' value='0' name='" . $row['name'] . "'>" . "</td>";
echo "<td>" . $row['price'] . "</td>";
echo "</tr>";
if($row['name'] == "Morphite") {
break;
}
}
echo "</table>";
?>
我正试图像这样检索帖子数据:
echo '<table border="1">';
echo '<tr><td>Product</td><td>Value</td></tr>';
while($item = mysqli_fetch_array($items)) {
echo '<tr>';
echo '<td>';
echo $item['name'];
echo '</td>';
echo '<td>';
echo $_POST[$item['name']];
echo '</td>';
echo '</tr>';
}
echo '<tr><td>Total</td><td></td></tr>';
echo '</table>';
但是数据库中包含空格的任何“名称”都不会在另一端显示任何内容。
答案 0 :(得分:0)
由于您永远无法确定数据库中写入的内容(html的无效字符等),因此您应该在将此值用作输入name-attribute之前对其进行编码。因此,尝试htmlspecialchars或剥离空格和不可打印和无效的字符。此外,如果数据库中有主键(整数),则可以使用它来识别记录而不是名称。
答案 1 :(得分:-1)
尝试替换
echo $_POST[$item['name']];
与
echo $_POST["{$item['name']}"];