Yii搜索难度

时间:2014-03-20 15:37:44

标签: php mysql search yii criteria

假设我们的表格中包含名为number(数据类型varchar)的列,其中包含手机号码。电话号码是固定大小 - 10位数。我想要做的是,搜索确切位置的数字。像:

当我发送:xxx xxx xx xx时,它将返回所有编号

当我发送:223 2x5 xx xx时,它将返回仅匹配此模式的数字

如何在Yii框架中使用CDbcriteria来实现这一目标?

2 个答案:

答案 0 :(得分:0)

假设用户输入了数字,并且您拥有获得所有数字的$_POST["num"]变量

            $number = "";
            for ($counter = 1; $counter <= 10; $counter++) {
                if (is_numeric($_POST["num"][$counter]))
                    $number .= $_POST["num"][$counter];
                else
                    $number .= "%";
            }
            $criteria = new CDbCriteria();
            $criteria->condition = "number LIKE :number";
            $criteria->params = array(':number' => $number);
            ....

这必须帮助你

答案 1 :(得分:0)

使用&#39;而不是&#39;而不是使用&#39; _&#39;并删除空格。然后按照建议执行LIKE

正在寻找223 2x5 xx xx,请使用number LIKE "2232_5____"

如有必要,你可以

number LIKE REPLACE(REPLACE("223 2x5 xx xx", 'x', '_'), ' ', '')

这是一个测试:

mysql> select '2232958765' LIKE REPLACE(REPLACE("223 2x5 xx xx", 'x', '_'), ' ', '');
+------------------------------------------------------------------------+
| '2232958765' LIKE REPLACE(REPLACE("223 2x5 xx xx", 'x', '_'), ' ', '') |
+------------------------------------------------------------------------+
|                                                                      1 |
+------------------------------------------------------------------------+