Php 如何分解键值对并在查询中使用它们

Php 如何分解键值对并在查询中使用它们,php,mysql,laravel,explode,Php,Mysql,Laravel,Explode,在我的laravel项目中,我有一个db字段,用户可以在其中存储要考虑排序的参数以及它们的顺序。也就是说,数据表config包含如下列值 status-desc,priority-asc,..etc 在这里,当我编写查询时,我需要使用这些值作为ORDERBY对 ORDER BY status desc, priority asc 我可以像上面那样在查询代码中硬编码,因为排序列可以根据用户条目的不同而不同 我已经像这样分别分解了两个标准 $params = explode(',', $sort

在我的laravel项目中,我有一个db字段,用户可以在其中存储要考虑排序的参数以及它们的顺序。也就是说,数据表config包含如下列值

status-desc,priority-asc,..etc
在这里,当我编写查询时,我需要使用这些值作为ORDERBY对

ORDER BY status desc, priority asc
我可以像上面那样在查询代码中硬编码,因为排序列可以根据用户条目的不同而不同

我已经像这样分别分解了两个标准

$params = explode(',', $sort_param->config_value);
所以我得到$params[0]=状态描述和$params[1]=优先级asc

但是,我如何再次分解这些,并在order by查询中获取和使用它们

到目前为止,我所做的是:

$countt = count($params);
for($prm=0;$prm<$countt;$prm++){
list($k, $v) = explode('-', $params[$prm]);
}
 echo $k.' '.$v;
echo$k和$v显示优先级asc

Try

$tab = 'status-desc,priority-asc,value,string,demo';
$params = explode(',',$tab);
foreach($params as $v){
    $tab2[] = explode('-',$v);


}
$newTab = array_merge($params,$tab2);
print_r($newTab);

试试这个简单的代码

$tab = 'status-desc,priority-asc,value,string,demo';
list($statut,$priority,$value,$demo) = explode(',',$tab);
echo $statut ;

您的数据库设计错误,将数据序列化到单个列违反1NF。如果一个表中的一列需要存储多个值,那么这肯定表明您需要为该列创建从属表。此外,建立基于外部输入的查询是有风险的,简单地说。为什么不将数据视为关联数组,然后将其序列化以将其保存在数据库中。然后,你可以取消序列化,做任何你想做的事。例如:$value=array'status'=>'desc','priority'=>'asc'$序列化=序列化$value;嗨,谢谢你的回答,它解决了我的问题。。让我试着在查询中使用它们。。