需要正确查询数据库

时间:2013-09-18 19:48:38

标签: mysql codeigniter

我需要一些帮助来编写正确的查询。这是场景......

我正在对输入字段实施一些自动建议。我有这个简单建议的查询。

$temp = $this->db
    ->select('state as label, state as value')
    ->where('last_name !="" AND state LIKE ', $term.'%' )
    ->get('user_profile')
    ->result_array();

此查询对我来说非常适合。但问题是此查询仅从一列(即状态列)中调出结果。现在我需要的是我想获取与那里的三列中的任何一列匹配的结果。我现在写的查询是

$temp = $this->db
    ->select('zip as label, zip as value')
    ->where(
        'last_name !="" 
        AND zip LIKE ', $term.'% 
        OR suburb LIKE ', $term.'% 
        OR city LIKE ', $term.'%' )
    ->get('user_profile')
    ->result_array();

此查询根本没有执行。某些地方必定存在语法错误,我无法识别...我希望符合条件的结果我会以下列形式显示它们。

拉链,郊区,城市

以前的查询只显示一列的结果,然后按原样显示。现在我需要调出3列的结果,并且需要按原样显示它们。

任何帮助都将受到高度赞赏。

感谢。

2 个答案:

答案 0 :(得分:1)

试试这个

$where = "last_name !=' ' AND (zip LIKE '%{$term}%' OR suburb LIKE '%{$term}%' OR city LIKE '%{$term}%')";
$temp = $this->db->select('zip as label, zip as value')->where($where)->get('user_profile')->result_array();

我认为会帮助你。查询应该是这样的。现在您可以相应地更改它。如果您遇到任何问题,请告诉我。

答案 1 :(得分:0)

替换:

where('last_name !="" AND zip LIKE ', $term.'% OR suburb LIKE ', $term.'% OR city LIKE ', $term.'%' )

使用:

where('last_name !="" AND zip LIKE '. $term.'% OR suburb LIKE '. $term.'% OR city LIKE '. $term.'%' )

这将是一个良好的开端。此外,启用错误报告以更好地了解您的问题(在CI中执行此操作,打开项目的index.php文件并设置:

define('ENVIRONMENT', 'development')