选择行的随机FIELD并相应地更新它

时间:2011-12-13 19:36:46

标签: php

我需要构建一个函数来选择字段的随机行,但不能选择任何行。

让我们说这些字段被称为

id, user, one, two, three, four,five,six
1,'jack',0,0,0,1,0,0

当调用该函数时,我需要更新以下字段之一:one, two, three, four,five,six,其值为'0'并将其设置为'1'。因此,不能多次选择一个字段。实际上有超过10个领域需要这种处理。订单必须是随机的。

我仍然试图在不写太多行的情况下找出逻辑。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

怎么样:

    function Z($id){
    $array =array('one','two','three'); //field names
     shuffle($array);//radnoise the array

     $update='';
     foreach($array as $k => $a){
        if($k==0){
            $update .="'$a'=1,";//first random field is 1

        }else{
            $update .="'$a'=0,";//all other fields are 0
        }
    }

    $update=rtrim($update,",");//remove last comma

    $q="update table set $update where id=$id";
return $q; //for testing, otherwise run query
}

echo Z('4'); //test it

//版本2

function ZZ($id){
    $array =array('one','two','three'); //field names
     $value=$array[array_rand($array)];
    $q="update table set '$value'=1 where id=$id";
return $q; //for testing, otherwise run query
}

echo ZZ('4'); //test it

答案 1 :(得分:0)

我从未听说过在任何数据库中选择随机列的方法,但如果值都是1或0,为什么不把它们全部放在一个?这样你就会有一个像101000100001001这样的字符串,其中每个数字代表一个不同的“列”。您可以使用PHP来操作它并更新数据库。