Zend_Db_Selectのwhere()メソッドは、オプションの値を完全に含める場合、およびZend_Db_AdapteのquoteInto()メソッドは、SQLをエスケープする限り基本的に同じですか?
言い換えれば、これらの2つの引用は同一であり、同等に安全ですか?
$select->where($this->getAdapter()->quoteInto('id = ?', 3));
$select->where(id = ?, 3);
ありがとう!
Zend_Db_Selectのwhere()メソッドは、オプションの値を完全に含める場合、およびZend_Db_AdapteのquoteInto()メソッドは、SQLをエスケープする限り基本的に同じですか?
言い換えれば、これらの2つの引用は同一であり、同等に安全ですか?
$select->where($this->getAdapter()->quoteInto('id = ?', 3));
$select->where(id = ?, 3);
ありがとう!
Zend_Db_Select::_where() は、Zend_Db_Abstract::quoteInto() を使用して、SQL 文字列をアセンブルするときに Zend_Db_Select::where() の 2 番目のパラメータとして指定した値を引用します。
Zend_Db_Select の 983 行目から:
/**
* 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)";
}
私が理解しているように、これはすでにどこにあるので、指定するのは冗長です。