2010-05-20 3 views
1

Существуют ли методы where() Zend_Db_Select, когда они содержат необязательное значение, и методы quoteInto() Zend_Db_Adapte, в основном, такие же, как и escaping SQL?Zend_Db_Select where() и Zend_Db_Adapter quoteInto()

Другими словами, эти две части цитаты идентичны и одинаково безопасны?

$select->where($this->getAdapter()->quoteInto('id = ?', 3)); 

$select->where(id = ?, 3); 

Спасибо!

ответ

1

Zend_Db_Select :: _ где() использует Zend_Db_Abstract :: quoteInto(), чтобы указать значения, указанные вами как второй параметр в Zend_Db_Select :: where() при сборке строки sql.

От линии 983 из Zend_Db_Select:

/** 
* Internal function for creating the where clause 
* 
* @param string $condition 
* @param mixed $value optional 
* @param string $type optional 
* @param boolean $bool true = AND, false = OR 
* @return string clause 
*/ 
protected function _where($condition, $value = null, $type = null, $bool = true) 
{ 
    if (count($this->_parts[self::UNION])) { 
     require_once 'Zend/Db/Select/Exception.php'; 
     throw new Zend_Db_Select_Exception("Invalid use of where clause with " . self::SQL_UNION); 
    } 

    if ($value !== null) { 
     $condition = $this->_adapter->quoteInto($condition, $value, $type); 
    } 

    $cond = ""; 
    if ($this->_parts[self::WHERE]) { 
     if ($bool === true) { 
      $cond = self::SQL_AND . ' '; 
     } else { 
      $cond = self::SQL_OR . ' '; 
     } 
    } 

    return $cond . "($condition)"; 
} 
+0

спасибо !! Я должен был подумать, чтобы посмотреть на исходную декларацию. – Chris

0

Как я понимаю, где уже делает это так что указание было бы излишним.

+0

Annnnnddd похоже, что я должен загрузить новые ответы, прежде чем нажать Добавить в следующий раз. – Stuart

 Смежные вопросы

  • Нет связанных вопросов^_^