如何只更新表中包含零值的一列?

时间:2014-11-22 07:51:21

标签: php mysql arrays

我有一个如下数组:

$array = ['184717453','184717454','184717455','184717456','184717457'];

我有一张桌子,有mobileno个库。某些mobileno字段包含0值。我想使用上面的数组更新包含0值的字段。 使用第一个数组元素将更新包含0值的第一个mobileno字段,第二个数组元素将更新包含0值的第二个mobileno字段,依此类推......

直到现在我已经尝试过:

$array = ['184717453','184717454','184717455','184717456','184717457'];
$clid = count($array);
$sql = mysqli_query($conn,"SELECT * FROM `tbl_subscription` WHERE mobileno = 0");
$rowcount=mysqli_num_rows($sql);


for ($i = 0; $i < $clid; $i++) {
    for($j = 0; $j<$rowcount; $j++) {
        $sql = "UPDATE `tbl_subscription` SET mobileno='$array[$i]' WHERE mobileno = 0";
        $res = mysqli_query($conn, $sql);
    }
}

它不能按我的意愿工作。目前,它仅使用第一个数字184717453更新包含0值的所有字段。我怎么能这样帮助我。

4 个答案:

答案 0 :(得分:1)

我已经为您设计了一个解决方案,在这里我假设了一个名为id的字段,您的表格tbl_subscription可能包含此字段,并且肯定会有效,请尝试以下代码

<?php
$array = ['184717453','184717454','184717455','184717456','184717457'];
$clid = count($array);
$sql = mysqli_query($conn,"SELECT * FROM `tbl_subscription` WHERE mobileno = 0");
$rowcount=mysqli_num_rows($sql);


for ($i = 0; $i < $clid; $i++) {
    
	
		
		$sql = mysqli_query($conn,"SELECT `id` from `tbl_subscription` WHERE mobileno = 0");
		if(mysqli_num_rows($sql)>0)
		{
		$arr=mysql_fetch_array($sql)
		
		$sql = "UPDATE `tbl_subscription` SET mobileno='$array[$i]' WHERE id = ".$arr['id'];
        $res = mysqli_query($conn, $sql);
		}
    
}
?>

答案 1 :(得分:-1)

@Phylogenesis我只是根据RenéHoffmann的建议,使用LIMIT在我的本地机器上尝试下面的代码。但是执行需要太多时间。

            $array = ['184717453','184717454','184717455','184717456','184717457'];
            $clid = count($array);
            for ($i = 0; $i < $clid; $i++) {
                $sql = "UPDATE `tbl_subscription` SET mobileno='$array[$i]' WHERE mobileno = 0 LIMIT 1";
                $res = mysqli_query($conn, $sql);
            }

答案 2 :(得分:-1)

请参阅UPDATE的MySQL手册:http://dev.mysql.com/doc/refman/5.0/en/update.html 最后一个参数LIMIT应该做你想要达到的目标。

答案 3 :(得分:-1)

$array = ['184717453','184717454','184717455','184717456','184717457'];
$clid = count($array);
$sql = mysqli_query($conn,"SELECT * FROM `tbl_subscription` WHERE mobileno = 0");
$rowcount=mysqli_num_rows($sql);

$i=0;
while($fetch = mysqli_fetch_array($sql))
{
     $sql = "UPDATE `tbl_subscription` SET mobileno='$array[$i]' WHERE mobileno = 0 and id = '".$fetch['id']."' ";
     $res = mysqli_query($conn, $sql);
     $i++;
 }

您还检查查询中的ID以仅更新特定行。