无法将值从文本框更新到数据库

时间:2015-06-21 05:50:36

标签: php

我无法将新价格更新到数据库中。数据库不会更新。我不确定我的代码出错了。

while($row = mysqli_fetch_assoc($result)) {
  echo "<tr>";
  echo "<td>" . $row['Menu_id']. " </td>";
  echo "<td>" . $row['Menu_type']. " </td>";
  echo "<td>" ."<input type =text name=Price value =" .$row['Price']. " </td>";                           
  echo "<td>" ."<input type=submit name=Update value=Update"." </td>";
  echo "<td>" ."<input type =hidden name=hidden value = " .$row['Menu_id']. " </td>";

  echo "</tr>";
}

echo "</table>";

}


if(isset($_POST['Update'])){

  $sqlAdd = "UPDATE Menu SET Price ='$_POST[Price]' WHERE Menu_id ='$_POST[hidden]'";
  $result = mysqli_query($con, $sqlAdd );

  if(mysqli_query($con, $sqlAdd)){
    echo '<p><strong><font color = "red">The price for Menu id '.$Menu_id.' is updated.</strong></font>';
    //redirect page
    header('Refresh :5 ; url = UpdateMenuPrice.php');

  } 
  else {
    echo "failed <br>";
  }

价格未更新。

2 个答案:

答案 0 :(得分:0)

您忘记了右括号以及您的查询格式不正确

 echo "<td>" ."<input type =text name=Price value =" .$row['Price']. "></td>";                           
                    echo "<td>" ."<input type=submit name=Update value=Update >"." </td>";
                    echo "<td>" ."<input type =hidden name=hidden value = " .$row['Menu_id']. "> </td>";

echo "<td>" ."<input type =text name=Price value =" .$row['Price']. "></td>"; echo "<td>" ."<input type=submit name=Update value=Update >"." </td>"; echo "<td>" ."<input type =hidden name=hidden value = " .$row['Menu_id']. "> </td>";

使用$ _REQUEST,$ _POST,$ _GET时,您必须使用单引号 这是您的查询。

$sqlAdd = "UPDATE Menu SET Price ='".$_POST['Price']."' WHERE Menu_id ='".$_POST['hidden']."'";

答案 1 :(得分:0)

您忘记关闭每个输入元素上的尖括号。

您还应该在HTML表单值周围加上引号。您可以使用反斜杠,单引号转义的双引号,或使用HEREDOC语法,如下所示:

while($row = mysqli_fetch_assoc($result)) {
    echo <<<HTML
    <tr>
        <td>{$row['Menu_id']}</td>
        <td>{$row['Menu_type']}</td>
        <td><input type="text" name="Price" value="{$row['Price']}"></td>
        <td><input type="submit" name="Update" value="Update"></td>
        <td><input type="hidden" name="hidden" value="{$row['Menu_id']}"></td>
    </tr>
HTML;
}

echo "</table>";

更新部分中的$ _POST变量不应该用引号括起来,但在方括号中应该有单引号(与$ row数组在上面显示的方式相同)。

最后,使用您的代码,人们很容易破解您的数据库以读取所有数据库数据,删除或更改它。您需要使用预准备语句来阻止SQL注入。