繁体   English   中英

Zend_Db_Select:multiple from子句

[英]Zend_Db_Select : multiple from clause

Hy,我有一些问题与Zend_Db_Select。 我有2个变量:类别和城市。 这两个变量可能有值,也可能未设置。 所以我验证:

$status = '`p`.status = 1';
    if($catID){
        $catSQL =  "`p`.parent = {$catID}";
    }else{
        $catSQL = '1=1';
    }

    if($city){
        $citySQL =  "`pm`.`meta_key` = 'oras' and `pm`.`meta_value` = {$city}";
        $citySelect = array('pm' => 'postsmeta');
        $condCity = "`p`.`ID` = `pm`.`parent_id`";
    }else{
        $citySQL = '1=1';
        $citySelect = NULL;
        $condCity = '1=1';
    }

现在这是我的查询:

 $select = $db->select()
         ->from( array('p' => 'posts'))
         ->from($citySelect)
         ->where($status)
         ->where($catSQL)
         ->where($condCity)
         ->where($citySQL)
         ;

问题是如果城市是空的我有类似的东西

 $select = $db->select()
         ->from( array('p' => 'posts'))
         ->from('')
         ->where(1=1)
         ->where(1=1)
         ->where(1=1)
         ->where(1=1)
         ;

问题是,如果城市为空,我如何从查询中删除('')。 谢谢!

只是,

$select = $db->select()
->from( array('p' => 'posts'));
if($someConditionIsTrue) {
    $select->join($table, $condition);
}
$select->where('field_value = ?', 'value1');
if($someConditionIsTrue) {
    $select->where('another_field = ?', 'value 2');
}

希望能帮助到你。

请使用此语法$select->where('another_field = ?', 'value 2'); 正确转义值以防止SQL注入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM