我的问题是,当我想从数据库读取数据与zend框架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
in my controller:
$gallery = new Gallery_Model_DbTable_Maps();
$maps = $gallery->getMaps($user_id);
$this->view->datas = array(
'maps' => $maps,
);
in my model:
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中运行这个查询(包含连接),一切都很好。
try this:
$select = $this->select();
$select->where('userid = ?', $id);
$rows = $this->fetchAll($select); // rowset
点击这里阅读更多信息
如果你使用Zend_Db_Adapter,它会像这样:
$dbAdapter = Zend_Db_Table::getDefaultAdapter();
$sql = 'SELECT * FROM maps WHERE userid = ?';
$rows = $dbAdapter->fetchAll($sql, $id); // array
点击这里了解更多信息