【问题标题】:Why are my values not being updated?为什么我的价值观没有更新?
【发布时间】:2013-02-04 10:34:57
【问题描述】:

我正在学习一个简单的、不安全的本地数据库(是的,目前仍在使用 MySQL)我可以在表中查看我的数据库行,然后单击编辑按钮,然后显示每个选择的单个记录文本框中的列以更新和保存。这是我的编辑页面。

<?php
$id = $_GET['id'];
$connect = mysql_connect("localhost", "XXXXXX", "XXXXXXX") or
die ("Check your connection.");
mysql_select_db("toner");
$quey1="select * from inventory where id ='".$id."'";
$result=mysql_query($quey1) or die(mysql_error());
?>
<html>
<form action="updateinfo.php" method="post">
<table>
<?php
while ($row=mysql_fetch_array($result))
{
?>
<tr>
  <td align="right">Partnumber:</td>
  <td align="left"><input type="text" name="partnumber" value="<?php echo $row['partnumber'];?>"/></td>
</tr> 
<tr>
  <td align="right">Description:</td>
  <td align="left"><input type="text" name="description" value="<?php echo $row['description'];?>"/></td>
</tr> 
<tr>
  <td align="right">Vendor:</td>
  <td align="left"><input type="text" name="vendor" value="<?php echo $row['vendor'];?>"/></td>
</tr> 
<tr>
  <td align="right">Price:</td>
  <td align="left"><input type="text" name="price" value="<?php echo $row['price'];?>"/></td>
</tr> 
<tr>
  <td align="right">Quantity:</td>
  <td align="left"><input type="text" name="quantity" value="<?php echo $row['quantity'];?>"/></td>
</tr> 
</table>
<br>
<input type="hidden" name="id" value="<?php echo $row['id'];?>"/>
<input type="submit" value="Edit/Update Toner">
<?php
 }
?> 
</form>
</html>

这是我的更新更新信息

<?php
mysql_connect("localhost","XXXXX","XXXXX") or die("Error: ".mysql_error()); 
mysql_select_db("toner");
$id =$_POST['id'];
$partnumber = $_POST['partnumber'];
$description = $_POST['description'];
$vendor = $_POST['vendor'];
$price = $_POST['price'];
$quantity = $_POST['quantity'];
$sql = "UPDATE inventory SET partnumber ='".$partnumber."',description ='".$description."',vendor ='".$vendor."',price ='".$price."',quantity ='".$quantity."' WHERE id ='".$id."'";
mysql_query($sql) or die ("Error: ".mysql_error());
echo "Updated successfully";
header( "refresh:10;url=toner.php" );
?>

添加主键后,我可以更新数据库,但是 $id = $_POST['id'];仍然给出错误,任何帮助表示赞赏。谢谢。是的,我知道它容易被注入,我应该使用 PDO 或 MySQLi,但我仍然是初学者,这是我选择开始学习的地方。谢谢。

【问题讨论】:

  • 通过准备好的语句学习使用 MySQLi 或 PDO,不要使用不会存在的不良做法和过时的扩展
  • 您是否将值填充到表单字段中?为什么要使用 while 循环来保留单个值?
  • (yes still using MySQL for now) 使用 MySQL 没有错。如果数据库是中小型数据库,我会说使用 MySQL 是一个好习惯。

标签: php mysql set sql-update where


【解决方案1】:

问题是因为partnumber,在这里您再次重置partnumber,但新的不在您的数据库中,并且由于该查询不会更新新值。

$sql = "UPDATE inventory SET description ='".$description."',vendor ='".$vendor."',price ='".$price."',quantity ='".$quantity."' WHERE partnumber = '".$partnumber."'";

解决方案

不要再设置partnumber,只在where子句中使用。

【讨论】:

  • 在 where 子句中使用 inventory 表的主键。
  • 大部分主键都设置在id列上。
  • @DrewG 将其与您的主键一起使用,例如 &lt;td&gt;&lt;a href="editinfo.php?id=' . $row['id'] . '"&gt;Edit&lt;/a&gt;
  • @DrewG 您将 id 作为获取参数发送,因此请使用 $id =$_GET['id']; 而不是 $id =$_POST['id'];
  • @DrewG 使用一个隐藏字段来存储 id &lt;input type="hidden" name="partnumber" value="&lt;?php echo $row['id'];?&gt;"/&gt; 并使用它在更新页面中检索 id 变量 $id =$_POST['id'];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
  • 1970-01-01
相关资源
最近更新 更多