php zend framework2 sql execute query返回标量

时间:2014-08-12 15:03:37

标签: php sql zend-framework2 scalar

我有一个在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()

那里得到的结果集

这怎么可能?

1 个答案:

答案 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中的等价物需要几行代码作为上述函数。

希望这可以提供帮助。