我需要构建一个函数来选择字段的随机行,但不能选择任何行。
让我们说这些字段被称为
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个领域需要这种处理。订单必须是随机的。
我仍然试图在不写太多行的情况下找出逻辑。有什么建议吗?
答案 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来操作它并更新数据库。