表=位置 Fields =地址,街道,郊区
地址字段最初为空,街道和郊区都已填充。我试图用街道和郊区数据更新地址字段,但它不起作用。只允许我用一个字段更新。使用下面的代码,地址字段将更新为0 ...但如果我从更新中删除其中一个变量,那么它将只在街道或郊区正确更新。
我这样做的原因是因为数据的呈现方式是这种格式,我手动操作的时间太长了。
while ($row=$result->fetch_assoc()) {
$street=$row['street'];
$suburb=$row['suburb'];
$mysqli->query("UPDATE address SET address = $street+$suburb");
echo($street);
}
}
答案 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
的最大值