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)
;
问题是,如果城市为空,我如何从查询中删除('')。 谢谢!
答案 0 :(得分:2)
简单地说,
$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注入。