我有一个像这样的表userx:
id----------text---------num
1-----------foo-----------0
2-----------bar-----------0
3-----------widget--------0
4-----------widget--------0
5-----------widget--------0
6-----------widget--------0
7-----------widget--------0
8-----------widget--------0
我有一个这样的数组:
$numeros = array(30, 50, 60, 70, 90, 110, 130, 150);
所以我想创建一个查询,从$ numeros获取每个结果并更新到我的列(从id = 1开始)“num”,如下所示:
id----------text--------------num
1-----------foo--------------30
2-----------bar--------------50
3-----------widget-----------60
4-----------widget-----------70
5-----------widget-----------90
6-----------widget-----------110
7-----------widget-----------130
8-----------widget-----------150
是否可以使更新成为单个更新(或循环内的多个)查询?如何?
答案 0 :(得分:0)
$query = "UPDATE userx SET num=? WHERE id=?";
for($j = 0, $j < sizeof(numeros); $j++)
{
$index = $j+1;
$stmt = $db->prepare($query);
$stmt->bind_param('ii', $numeros[$j], $index);
$stmt->execute();
}
所以虽然技术上不是一个查询,但你只需编写一次
答案 1 :(得分:0)
您可以尝试使用一个函数通过for循环调用另一个函数来更新每个元素。 IE
#CODE TO CONNECT TO Mysql database
#then call function to update these column elements
updateColumns();
function updateColumns(){
$query = "SELECT column FROM table";
$result = mysql_query($query);
if(!$result){
echo "Error message you want.</br>";
echo mysql_error();
}
else{
$count = mysql_num_rows($result);
if($count){
# There are rows. now check if there is a match
while($row=mysql_fetch_array($result)){
#cycle through each row of the $result column
foreach($row as $key => $value){
if($key){
updateThisColumnsValue($value);
}
}
}
}
}
}
function updateThisColumnsValue($value){
$query = "UPDATE table SET columnToCHange='newValue' WHERE referenceColumnName = '$value'";
$result = mysql_query($query);
if(!result){
error message
}# that should be it.
}
此处还有sql update函数w3school.sql的链接 我希望这会有所帮助。