我正在开展一个项目,我根据多个过滤器显示记录。我现在正在做的是制作一个包含所有条件的$where
变量。例如
$whereP .= ' and purpose="buy"';
$whereP .= ' and type="sale"';
对于其他属性,然后我将第一个and
包含在内。问题是我有分页,由于url中的单个双引号问题,我无法在参数中发送$where
。所以我想要一个解决方案是,我做了两个不同的变量$where
和$whereP
。
$whereP .= and purpose=buy;
$whereP .= and type=sale;
现在,当我从网址获取$whereP
时,我想在属性值中添加双引号,例如。
$where = purpose="buy" and type="sale"
为此我将=
替换为="
,以便将"
放在每个媒体资源的前面,但我如何在每个媒体资源价值之后添加"
?< / p>
现在我得到了$whereP = purpose="buy and type="sale
我需要$whereP = purpose="buy" and type="sale"
由于
答案 0 :(得分:1)
你应该听取Arun Killu评论中的建议并停止以这种方式构建查询,但是如果你想保持原样,你可以像这样使用preg_replace(假设尾随空格是一个足够好的分隔符):
$string = preg_replace ( '/=(.*)\s/i' , '="$1" ' , $string );
答案 1 :(得分:0)
我有更好的方案..
创建您的查询字符串,如...
?where[purpose]=buy&where[type]=sale
你会得到一个像 -
这样的数组Array
(
[where] => Array
(
[purpose] => buy
[type] => sale
)
)
现在,您可以更轻松地使用此数组创建SQL
。
答案 2 :(得分:0)
对于上述答案,请试试抱歉 它肯定会起作用
$variable="ad";
$whereP="";
$whereP .= ' and purpose="'.$variable.'"';
echo $whereP;
答案 3 :(得分:0)
从字面上看,但如上所述,有更好的方法可以做到这一点,我使用Zend Framework。 http://framework.zend.com/manual/2.2/en/modules/zend.db.sql.html
$where = preg_replace('/=(\w+)/', '="$1"', $whereP);