我的问题是,当我想使用zend framework 1从数据库中读取数据时,即使使用不同的条件,我也会得到完全相同的结果。
我的名为“ maps”的表包含2行:

id: 1 date: date1 description: sth1 userid: 30
id: 2 date: date2 description: sth2 userid: 30


application.ini:

resources.db.params.charset = "utf8"
resources.db.adapter = pdo_mysql
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password =
resources.db.params.dbname = gallery


在我的控制器中:

$gallery = new Gallery_Model_DbTable_Maps();
$maps = $gallery->getMaps($user_id);
$this->view->datas = array(
     'maps' => $maps,
);


在我的模型中:

class Gallery_Model_DbTable_Maps extends Zend_Db_Table_Abstract
{
    protected $_name = 'maps';
    public function getMaps($id){
        $select = $this->select();
        $select->where('userid = ?', $id);
        $rows = $this->fetchAll();
        return $rows->toArray();
    }
}


如果我将“ $ id”替换为“ Gallery_Model_DbTable_Maps”中的30以外的值,那么我总是得到上面提到的2行...
如果我为此更改功能...

 public function getMaps($id){
    $dbAdapter = Zend_Db_Table::getDefaultAdapter();
    $stmt = $dbAdapter->query('SELECT * FROM maps WHERE userid = 32');
    $rows = $this->fetchAll()->toArray();
    return $rows;
 }


...问题仍然存在,并且得到相同的结果。
但是,如果我在phpmyadmin中运行查询,一切都很好

还有一种想法(可能有助于找出问题所在),如果我使用联接,联接的表数据不会出现在结果中(在zf结构中),但是如果我在phpmyadmin中运行此查询(包含联接) , 一切都好。

最佳答案

尝试这个:

$select = $this->select();
$select->where('userid = ?', $id);
$rows = $this->fetchAll($select); // rowset


进一步了解here

如果使用Zend_Db_Adapter,它将像:

$dbAdapter = Zend_Db_Table::getDefaultAdapter();
$sql = 'SELECT * FROM maps WHERE userid = ?';
$rows = $dbAdapter->fetchAll($sql, $id); // array


进一步了解here

10-08 09:29
查看更多