2

我正在做一个项目,我根据多个过滤器显示记录。我现在正在做的是制作一个$where包含所有条件的变量。例如

$whereP .= ' and purpose="buy"';

$whereP .= ' and type="sale"';

同样对于其他属性,然后我 substr 第一个and. $where问题是我有分页,由于 url 中的单双引号问题,我无法发送参数。所以我想要一个解决方案是,我做了两个不同的变量$where$whereP.

$whereP .= and purpose=buy;

$whereP .= and type=sale;

现在,当我$whereP从 url 获取时,例如,我想为属性值添加双引号。

$where = purpose="buy" and type="sale"

为此,我将替换=="以放在"每个属性之前,但是如何"在每个属性值之后添加?

现在我得到$whereP = purpose="buy and type="sale

我需要$whereP = purpose="buy" and type="sale"

谢谢

4

4 回答 4

1

您应该接受 Arun Killu 评论中的建议并停止以这种方式构建查询,但如果您想保持原样,您可以使用 preg_replace 像这样(假设尾随空格是一个足够好的分隔符):

$string = preg_replace ( '/=(.*)\s/i' , '="$1" ' , $string ); 
于 2013-09-23T12:50:13.537 回答
0

我有一个更好的方案。

创建您的查询字符串,如...

?where[purpose]=buy&where[type]=sale

你会得到一个像 -

Array
(
    [where] => Array
        (
            [purpose] => buy
            [type] => sale
        )

)

现在,您可以更轻松地SQL使用此数组创建一个。

于 2013-09-23T12:47:45.677 回答
0

试试这个对不起上面的答案它肯定会工作

$variable="ad";
$whereP="";
$whereP .= ' and purpose="'.$variable.'"';

echo $whereP;
于 2013-09-23T12:49:17.157 回答
0

从字面上看,但如前所述,有更好的方法可以做到这一点,我使用 Zend Framework。 http://framework.zend.com/manual/2.2/en/modules/zend.db.sql.html

$where = preg_replace('/=(\w+)/', '="$1"', $whereP);
于 2013-09-23T12:50:48.883 回答