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

时间:2014-05-13 09:57:01

标签: php mysql

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

AND

如果产生这种查询,我需要这样做:
1 - 如果以$query="select * from case where case_name='name' AND case_status='102' AND"; 结束 2 - 删除AND
3 - 在没有最后AND的情况下返回查询 结果应该是这样的:

AND

我没有太多使用PHP函数的经验。我怎么能这样做?
向你求助。

4 个答案:

答案 0 :(得分:0)

试试这个,

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

答案 1 :(得分:0)

快速修复:

$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

答案 2 :(得分:0)

爆炸字符串并弹出最后一个元素。

$arr = explode(" ", $query);

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

运行$ query它应该工作

答案 3 :(得分:0)

  • 首先你的表名CASE是mysql reserved keyword你应该将你的表重命名为其他东西或者用反引号来表示它

  • 您可以在没有AND的情况下使用查询,当您添加其他查询时,只需从AND开始。

像那样:

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

如此相似,你的条件不正确,那么只有第一个查询才有效,如果条件为真则第二个查询将起作用,它以AND开始。你不需要删除AND。