我正在从一个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组合框选项?
再次感谢。
答案 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
清楚解释的