我有一个在zend framework 2中执行的查询
protected function getCityByZip($zip){
$adapter = $this->getServiceLocator()->get('myConn');
$sql = new Sql($adapter);
$select = $sql->select();
$select->from(array("cities" => "cities"))
->columns(array('cityName'))
->where(array("cityZip" => $zip));
$statement = $sql->prepareStatementForSqlObject($select);
$result = $statement->execute();
return $result;
}
我想做类似
的事情的ExecuteScalar();
只得到一个值,而不是像我从使用execute()
那里得到的结果集这怎么可能?
答案 0 :(得分:0)
我不知道这是否是您正在寻找的内容,但如果您希望您的函数getCityByZip($zip)
返回单个值,则可以执行以下操作:
protected function getCityByZip($zip){
$adapter = $this->getServiceLocator()->get('myConn');
$sql = new Sql($adapter);
$select = $sql->select();
$select->from(array("cities" => "cities"))
->columns(array('cityName'))
->where(array("cityZip" => $zip));
$statement = $sql->prepareStatementForSqlObject($select);
$resultSet = $statement->execute();
$current = $resultSet->current();
return $current->cityName;
}
编辑:
我认为您正在寻找的是fetchOne()
方法,该方法位于 ZF1 DB Adapter
中(请参阅此Fetching a Single Scalar from a Result Set),但不在ZF2 。在ZF1中你可以这样做:
$db->fetchOne('SELECT cityName FROM users WHERE cityZip='.$zip);
但ZF2中的等价物需要几行代码作为上述函数。
希望这可以提供帮助。