更新PHP/MYSQL中的单个行

更新PHP/MYSQL中的单个行,php,mysql,sql-update,Php,Mysql,Sql Update,我正在从一个SQL数据库中检索数据,我正在以某种形式对其进行排序。我有一个更新页面,但我不知道如何根据用户希望更改的内容更新表,从而更新数据库 这就是我的意思。运行查询后,假设我得到了输出: Product | Descption | Quantity | Price | StartDate | End Date chcolates xyz 2.0 4.99 2013-03-11 2013-03-20 sweets

我正在从一个SQL数据库中检索数据,我正在以某种形式对其进行排序。我有一个更新页面,但我不知道如何根据用户希望更改的内容更新表,从而更新数据库

这就是我的意思。运行查询后,假设我得到了输出:

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中,通过对db进行排队,将其输出为一个表(即,该卖家正在销售提到的2种产品)

现在假设用户想要更新第一行并更改数量。那我怎么做呢?我知道我可以在哪里使用SQL查询更新表

我应该输出表格还是表单?用户可以更新他们想要的任何行和任何字段。(即,可以更新他们希望销售的产品、描述、数量等)

我怎样才能开始做这样的事情呢?有什么想法吗

===编辑===== 谢谢大家的建议。我有一个格式化错误。我在我的php标记中,在运行查询之后:

while($rows = mysql_fetch_assoc($querySellers)){
echo 'Product:'.'<br />'.'<input type="text" value = $rows[\'ProductName\']>';
在文本框内,这是一个格式错误,对吗?我能做些什么来解决这个问题?最初,产品名称也是一个下拉组合框。。。有没有一种方法可以让我在运行查询时将输出显示为选中的组合框选项


再次感谢

最好的做法是为表中的项目实现一个
ID
列(可能是自动递增?)或一些唯一标识符(
主键
)。这样,您可以通过执行以下操作轻松编辑一个项目

UPDATE table SET value = 'value' WHERE id = $id
在您的情况下,您没有任何唯一标识符,因此必须构建一个大型
WHERE
语句来包含所有ie

WHERE Product = 'chocolates' AND Description = 'xyz' AND .. AND..
这可能不是完全独一无二的

编辑:(参考编辑) 问题是PHP如何处理单引号和双引号。PHP将以单引号计算变量,而是以双引号计算变量

$myvar = "value";
echo '$myvar'; // output: $myvar
echo "$myvar"; // output: value 
所以你需要改变你的结构

echo "Product: <br /> <input type=\"text\" value = \"{$rows['ProductName']}\">";
echo“产品:
”;
请注意将单引号更改为双引号以及双引号的转义。
至于你对所选选项的问题。您需要一种方法来确定选择哪一个,并添加一个
IF
语句,其中包含要向选项添加
selected
属性的代码。

您需要一个带有主键的id,该id自动递增,而不是空值。 然后


然后,剩下的内容将由@UnholyRanger

清楚地解释,您需要(以某种方式)传递希望更新的行的唯一标识符。这就是为什么主键被发明的原因,这也是为什么您通常可以看到一些数字或字符序列通过GET方法以表单的形式传递。这就是为什么。现在就实际实现这个想法而言——好吧,这是发现的有趣部分,所以我将跳过:)建议编辑:删除“限制1”,因为如果确实是唯一的,则只考虑一个项目,因此不需要它。您必须循环返回的项目来构建表。您还必须将
ID
作为
hidden
字段或作为url(即
edit.php?item=$ID
中的一个值)包含在内,这样您就可以知道正在修改哪个项目了。我在sellers表中已经有一个ID,它是AI。问题是。。。每个卖家登录时都在销售不同的产品。因此,这个卖家正在销售列出的两种产品。问题是。。我想我需要在一个while循环中得到一个表单。。所以说:`while($rows=mysql\u fetch\u assoc($querysellers)){//output form with data?Product基本上我希望做的是…像我现在做的那样检索数据。将这些数据放在一个表单或表格中,以便用户更好地编辑。一旦用户编辑了这些字段,然后使用SQL查询更新数据库。产品名称、开始日期和结束日期都是可选的在字段上,其余的都是文本字段。这是否使其更简洁?您可以根据自己的需要进行设计,但它必须包含一种方式,以获得正在编辑的项目的ID。它是一个接一个地进行编辑,还是一整组进行循环。您必须研究最适合您需要的方法。啊,我明白了,谢谢。我将看看这一点,看看是什么我可以。我想我计划的是:循环遍历数据并将其显示为表单,然后为每个记录/行使用一个单独的更新按钮。因此,当他们单击“更新”时,它会更新特定的行。
echo "Product: <br /> <input type=\"text\" value = \"{$rows['ProductName']}\">";
UPDATE `your_db_table`.`column_table` SET `Product` 
= 'Sweet Stuff' WHERE 'Product`.`prod_id` = 1 LIMIT 1;