无法从名称中包含空格的帖子变量中检索值

时间:2014-08-30 23:05:21

标签: php html mysql forms post

我有一个简单的表单,旨在允许用户输入数值,然后将它们发送到计算结果的页面。

我遇到的问题是,其名称中包含空格的帖子变量似乎无法识别。

表单的创建方式如下:

<?php       
$minerals = mysqli_query($con, "SELECT * FROM items");
?>
<table border='1'>
<tr>
  <td>Product: &nbsp;</td>
  <td>Quanitity: &nbsp;</td>
  <td>Buyback Price: &nbsp;</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>';

但是数据库中包含空格的任何“名称”都不会在另一端显示任何内容。

2 个答案:

答案 0 :(得分:0)

由于您永远无法确定数据库中写入的内容(html的无效字符等),因此您应该在将此值用作输入name-attribute之前对其进行编码。因此,尝试htmlspecialchars或剥离空格和不可打印和无效的字符。此外,如果数据库中有主键(整数),则可以使用它来识别记录而不是名称。

答案 1 :(得分:-1)

尝试替换

  echo $_POST[$item['name']];

  echo $_POST["{$item['name']}"];