使用Mysql中的数组元素更新整个列

时间:2013-03-25 19:49:53

标签: php mysql

我有一个像这样的表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 

是否可以使更新成为单个更新(或循环内的多个)查询?如何?

2 个答案:

答案 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的链接 我希望这会有所帮助。