Как я могу использовать And / или в mysql-запросах, используя php и zend framework.for сейчас я использую это:
$db=Zend_Db_Table::getDefaultAdapter(); $select=new Zend_Db_Select($db); $select->from('users','*'); $select->joinInner('rest', 'users.repository = rest.id',array('username')); $select->where('username='.$rest.' and sold=0'); return $db->fetchAll($select); 
это правильный путь? если не правильный путь?
  Вы можете добавить AND к вашему запросу, вызвав where() несколько раз: 
 $select->where('this = ?', 'myValue') ->where('that = ?', 'myValue2'); 
Это будет означать:
 ... WHERE this = 'myValue' AND that = 'myValue2' 
  Чтобы добавить один или несколько OR к вашему запросу, используйте orWhere() : 
 $select->where('this = ?', 'myValue') ->orWhere('that = ?', 'myValue2'); 
Это будет означать:
 ... WHERE this = 'myValue' OR that = 'myValue2' 
Заметка
  Не забудьте использовать ?  синтаксис заполнителя, поскольку это простой способ предотвратить инъекции SQL. 
Это один из способов, но вы должны использовать? заполнители переменных для защиты от SQL-инъекции:
 $select=new Zend_Db_Select($db); $select->from('users','*'); $select->joinInner('rest', 'users.repository = rest.id', array('username')); $select->where('username = ? and sold=0', $rest); 
(сделайте то же самое для «проданного», если это иногда также происходит из переменной PHP).
  Вы также можете orWhere() цепочку с предложениями с несколькими вызовами orWhere() или orWhere() если хотите, или вместо: 
 $select=new Zend_Db_Select($db); $select->from('users','*'); $select->joinInner('rest', 'users.repository = rest.id', array('username')); $select->where('username = ?' $rest); $select->where('sold = ?', 0); 
Поскольку Zend_Db_Select использует свободное влияние, вы также можете написать его следующим образом:
 $select=new Zend_Db_Select($db); $select->from('users','*') ->joinInner('rest', 'users.repository = rest.id', array('username')) ->where('username = ?' $rest) ->where('sold = ?', 0); 
Ниже будет исправлен ваш вопрос, см. PHP postgres Zend Framework. Выберите запрос с предложением WHERE 'AND' для более полной записи о том, как работают функции where () и orWhere ().
 $db=Zend_Db_Table::getDefaultAdapter(); $select=new Zend_Db_Select($db); $select->from('users','*'); $select->joinInner('rest', 'users.repository = rest.id',array('username')); $select->where('username= ?',$rest);//multiple where() will use AND operator in query $select->where('sold = ?', 0);//if you need the OR operator use the orWhere() method return $db->fetchAll($select); 
Чтобы ответить на вопросительные знаки (Выдержка из руководства):
 fetchAll($select, $value)//most of the Zend_Db methods follow this API 
Метод fetchAll (): первым аргументом этого метода является строка, содержащая инструкцию SELECT. В качестве альтернативы первым аргументом может быть объект класса Zend_Db_Select. Адаптер автоматически преобразует этот объект в строковое представление оператора SELECT
  т.е. (? является держателем места для $ value): 
 $select->where('id = ?', $id); 
 $select->orWhere('age > ?', $age); 
В настоящее время вы используете старый синтаксис, в то время как он все равно будет работать, он устарел.