在PHP / MYSQL中更新了单独的行

时间:2013-03-12 16:11:41

标签: php mysql sql-update

我正在从一个SQL DB中检索数据,我正在表格中进行搜索。我有一个更新页面但是,我不知道如何根据用户希望更改的内容更新表,从而更新数据库。

这就是我的意思。在运行查询后说我有输出:

Product  | Descption  | Quantity   | Price   | StartDate  | End Date
chcolates   xyz           2.0         4.99     2013-03-11    2013-03-20      
sweets      yum!          1.0         1.99     2013-03-15    2013-03-27

所以这是通过排队数据库在PHP中作为表格输出的(即该卖家正在销售2个提到的产品)。

现在说用户想要更新第一行并更改数量,例如。那怎么办呢?我知道我可以使用SQL QUERY UPDATE TABLE卖家WHERE ??

我应该输出表格还是表格?用户能够更新他们想要的任何行以及任何字段。 (即可以更新他们想要销售的产品,descp,数量等。)

我该如何做这样的事情?有什么想法吗?

==== EDIT == 感谢大家的建议。我有格式错误。我在我的php标签内,并在运行查询后:

while($rows = mysql_fetch_assoc($querySellers)){
echo 'Product:'.'<br />'.'<input type="text" value = $rows[\'ProductName\']>';

这似乎不是从DB打印查询的VALUE而是打印

$rows['ProductName']

在文本框内,这是格式化错误对吗?我该怎么做才能解决这个问题?而且最初productName是一个下拉组合框...有没有办法可以做到这一点,当我运行查询时输出显示为SELECTED组合框选项?

再次感谢。

2 个答案:

答案 0 :(得分:2)

您应该做的最好的事情是为表中的项目实现ID列(可能是自动增量?)或一些唯一标识符(Primary Key)。这样,您可以通过

轻松编辑一个项目
UPDATE table SET value = 'value' WHERE id = $id

在您的情况下,您没有任何唯一标识符,因此您必须构建一个大WHERE语句以包含所有内容,即。

WHERE Product = 'chocolates' AND Description = 'xyz' AND .. AND..

这可能不完全是唯一的。

编辑 :(参考编辑) 问题是PHP如何处理单引号和双引号。 PHP将 NOT 用单引号评估变量,但是用双引号。

$myvar = "value";
echo '$myvar'; // output: $myvar
echo "$myvar"; // output: value 

所以你需要改变你的构造

echo "Product: <br /> <input type=\"text\" value = \"{$rows['ProductName']}\">";

注意单引号更改为double和双引号的转义。 至于你对所选选项的问题。您需要一种方法来确定选择了哪个,并添加IF语句,并在代码中添加Selected属性。

答案 1 :(得分:0)

您需要拥有一个自动增量的主键ID,而不是null。 然后

UPDATE `your_db_table`.`column_table` SET `Product` 
= 'Sweet Stuff' WHERE 'Product`.`prod_id` = 1 LIMIT 1;

其余的东西是由@UnholyRanger

清楚解释的