拆分mysql查询并删除其中的一部分


Split mysql query and delete a part of that

我在PHP函数中有很多条件,每个条件都会生成一个mysql查询。除了一个以AND运算符结尾的查询外,所有条件都能正常工作。在返回查询结果之前,我需要检查查询是否以AND结束,它应该删除AND,然后返回查询
这是查询示例:

$query="select * from case where case_name='name' AND case_status='102' AND";     

如果生成这种查询,我需要执行以下操作:
1-如果以AND结束
2-删除AND
3-返回没有最后一个AND的查询
结果应该是这样的:

$query="select * from case where case_name='name' AND case_status='102' ";

我没有太多使用PHP函数的经验。我该怎么做
谢谢你的帮助。

试试这个,

$query="select * from case where case_name='name' AND case_status='102' AND" $query = trim($query,'AND');

快速修复:

$query = preg_replace( "/AND$/",  "", $query);

不过,您应该修复条件的逻辑。像

$cond[] = "....";
$cond[] = "...."
.... 

然后

$query = $query_first_half +  implode ( " AND " , $cond );

最终请使用类似PDO 的sql库

http://fi1.php.net/manual/en/class.pdo.php

分解字符串并弹出最后一个元素。

$arr = explode(" ", $query);
$last = array_pop($arr);
if($last != "and")
{
  array_push($arr,$last);
}
$query = implode(" ",$arr);

运行$query their它应该工作

  • 首先,您的表名CASE是mysql保留关键字,您应该将表重命名为其他名称,或者通过backtick`对其进行escpae

  • 您可以使用不带AND的查询,添加其他查询时只需从AND开始。

像这样:

  $query="select * from `case` where case_name='name' AND case_status='102'";  
  $query .= " AND ........."; 

就像这样,您的条件不为true,那么只有第一个查询可以工作,如果条件为true,则第二个查询将工作,并以and开头。您不需要删除AND。