我希望我的问题足够清晰和完美,不会被投票——甚至不会被关闭。
我有简单的 HTML 表单:
<form ..>
<input type="hidden" name="user_id" value="1" />
<input type="text" name="tag[]" value="css" />
<input type="text" name="tag[]" value="php" />
<input type="text" name="tag[]" value="sql" />
...
<input type="text" name="email" value="love@stackoverflow.com" />
</form>
MySQL 架构:
id
user_id
tag
....
我想更新 user_id = 1
的 tag
,所以我编写了以下代码:
注意:我的表中只有一个用户。
$user_id = $_POST['user_id'];
$tag = mysql_escape_string($_POST['tag']); // $tag is an array - print $tag
$email = $_POST['email'];
foreach($tag as $value) {
$DB = "UPDATE table SET tag = '$value' AND email = '$email'
WHERE user_id = '$user_id'";
.... // run the query
}
我得到:
id user_id tag
1 1 sql
2 1 sql
3 1 sql
而不是:
id user_id tag
1 1 css
2 1 php
3 1 sql
我问我是否遗漏了 PHP 代码中的某些内容?
最佳答案
在第一个更新查询中,您将 user_id 为 1 的所有记录(全部 3 个)设置为“css”,然后是“php”,最后是“sql”。 foreach循环结束后,都是“sql”
你可以试试这个:
$i = 1;
foreach($tag as $value) {
$DB = "UPDATE table SET tag = '$value' WHERE user_id = '$user_id' AND id=$i";
.... // run the query
$i++;
}
关于php - 更新我的表 PHP/MySQL 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6848361/