0

私の問題は、zend フレームワーク 1 を使用してデータベースからデータを読み取りたい場合、異なる条件を使用してもまったく同じ結果が得られることです。
「maps」という名前のテーブルには 2 つの行が含まれています。

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

アプリケーション.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();  
    }  
}

「Gallery_Model_DbTable_Maps」で「$id」を 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でクエリを実行すると、すべて問題ありません

そして、もう1つ考えてみてください(問題の原因を突き止めるのに役立つかもしれません)、結合を使用すると、結合されたテーブルデータは結果(zf構造)に表示されませんが、このクエリ(結合を含む)をphpmyadminで実行すると、 すべて順調。

4

1 に答える 1

1

これを試して:

$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

詳細はこちら

于 2013-05-05T11:40:53.987 に答える