WTF?? empty фэйлит?

kode

never knows best
WTF?? empty фэйлит?

есть код:
PHP:
public function __construct($id=0,$data=array()){
	if($data){
		$this->db_data = $data;
		return;
	}

	$db = Zend_Registry::get('db');


	$this->db_data = $db->selectOne('phone_manufacturer',array('id'=>(int)$id));
	
	var_dump($this->db_data);

	if(empty($this->db_data)){
		throw new Exception("MANUFACTURER_NOT_FOUND ({$id})");
	}
}
дело в том что var_dump показывает что $this->db_data не пустая, но исключение всё равно летит. WTF?
 

kode

never knows best
удаляйте топик, уже сам отдебажил.

-~{}~ 20.03.08 19:27:

дело оказалось в некотором конструктивном решении внутри dbal:

PHP:
	/**
	 * Execute SQL query
	 * Required by Interface
	 *
	 * @param string $sql
	 * @return boolean
	 */
	public function query($sql){
		if(isset($_GET['SQL_DEBUG'])){
			echo "[QUERY]: ",$sql,((php_sapi_name()!="cli")?"<br>":''),"\n";
		}

		$this->last_result = mysql_query($sql,$this->db_link);
		if(!$this->last_result){
			throw new DBQueryException($sql,$this->getLastError());
		}
		$this->last_sql = $sql;

		return true;
	} //end of method query

	/**
	 * Execute SQL query and fetching single row
	 * Required by Interface
	 *
	 * @param string $sql
	 * @return array
	 */
	public function getRow($sql){
		if($this->last_sql != $sql){ // <- вот тут бага сидела
			$this->query($sql);
		}

		$this->last_fetched_row = mysql_fetch_assoc($this->last_result);

		return $this->last_fetched_row;
	} //end of method getRow

	/**
	 * Execute SQL query and fetching all rows
	 * Required by Interface
	 *
	 * @param unknown_type $sql
	 * @return unknown
	 */
	public function getAll($sql){
		$fetched_data = array();

		while($this->getRow($sql)){
			$fetched_data[] = $this->last_fetched_row;
		}

		return $fetched_data;
	} //end of method getAll
-~{}~ 20.03.08 19:30:

решилось с помощью добвления end_of_last_query (те проверки на то что всё уже получили)
 

Alexandre

PHPПенсионер
удаляйте топик, уже сам отдебажил.
так зачем же удалять, может кто-то на такие же грабли наступит и в этом топике найдет решение. Оставь свой след в истории Форума.
 
Сверху