我有2个MYSQL表,当我从表A中选择仅包含1列的日期时,可以说10行包含日期
$result = mysql_query("SELECT * FROM A");
$row = mysql_fetch_assoc($result);
在我想要使用表A mysql_query("UPDATE B SET something='1' WHERE name='".$row['name']."'")
中的这些日期更新另一个表B之后
所以我需要更新第二个表,但是它只更新了一次,第一个日期来自表A,其他9则忽略。所以我的问题是,如何使用1个表中的每个日期更新第二个表?
答案 0 :(得分:0)
您需要在循环中运行更新。执行查询后
$result = mysql_query("SELECT * FROM A");
并验证它是否成功(确保$result
不为null),而不是获取一行,使用循环:
while($row = mysql_fetch_assoc($result)){
// perform calculations & assignments with the $row elements
$result2 = mysql_query("UPDATE B SET something='1'
WHERE name='".$row['name']."'");
if(! $result2){
echo "update failed";
}
// Any other stuff you need to do
}
可替换地:
如果更新中的something
对于所有行都相同,则可以更改第一个查询,以便为您提供以逗号分隔的名称字符串:
$result = mysql_query("SELECT CONCAT("'",GROUP_CONCAT(name SEPARATOR "','"),"'")
AS all_names FROM A");
这样,您只会收到一行,然后您可以在第二个查询中使用它:
$result2 = mysql_query("UPDATE B SET something='1'
WHERE name IN (".$row['name'].")");