PHP-> sql UPDATE行,其他2行的数据在同一个表中合并在一起

时间:2011-07-05 07:42:21

标签: php mysql database field

表=位置 Fields =地址,街道,郊区

地址字段最初为空,街道和郊区都已填充。我试图用街道和郊区数据更新地址字段,但它不起作用。只允许我用一个字段更新。使用下面的代码,地址字段将更新为0 ...但如果我从更新中删除其中一个变量,那么它将只在街道或郊区正确更新。

我这样做的原因是因为数据的呈现方式是这种格式,我手动操作的时间太长了。

while ($row=$result->fetch_assoc()) {

    $street=$row['street'];
        $suburb=$row['suburb'];

        $mysqli->query("UPDATE address SET address = $street+$suburb");
        echo($street);
}
}

4 个答案:

答案 0 :(得分:2)

除非您希望整个表具有相同的地址列,否则不要忘记在UPDATE查询中放置WHERE子句。试试这个

while ($row=$result->fetch_assoc()) {

        $street=$row['street'];
        $suburb=$row['suburb'];
        $address=$street." ".$suburb;
        $id=$row['id'];

        $mysqli->query("UPDATE address SET address = `".address."` WHERE id=".$id);

}

答案 1 :(得分:1)

尝试:

while ($row=$result->fetch_assoc()) {

    $street=$row['street'];
        $suburb=$row['suburb'];
    $address = $street.$suburb;

        $mysqli->query("UPDATE address SET address = '$address'");
        echo($street);
}
}

答案 2 :(得分:1)

尝试

 $mysqli->query("UPDATE address SET address ='". $street." ".$suburb."' WHERE street = '$street' AND subrub = '$subrub'");

+不是php中的连接运算符。因此,请尝试使用.

另外,如果您没有WHERE子句,那么所有行都会更新!!!

答案 3 :(得分:0)

您不必将结果提取到PHP,然后为每一行运行UPDATE。您现在正在向数据库发送一个SELECT众多(数千或数百万,取决于您的表的大小)UPDATE语句。

您可以使用一个 UPDATE声明更新整个表格(所有行!):

"UPDATE location SET address = CONCAT(street, ' ', suburb) ;" 

如果(稍后)某些行已包含address列中的数据,则只能更新空地址行:

"UPDATE location
 SET address = CONCAT(street, ' ', suburb) 
 WHERE address = ''
    OR address IS NULL ;"  

您还应检查address字段的大小是否大于或至少等于CHAR_LENGTH(street) + CHAR_LENGTH(suburb) + 1的最大值