1

Zend で PDO_Mysql アダプターを使用すると、いくつかの問題が発生します。

アプリケーション.ini

resources.db.adapter = mysqli
resources.db.host = localhost
resources.db.dbname = myproject
resources.db.username = root
resources.db.password = 123456
resources.db.profiler.enabled = true
resources.db.profiler.class = "Zend_Db_Profiler_Firebug"

bootstrap.php の DB 初期化

$database = $config['resources']['db'];
$db = Zend_Db::factory($database['adapter'], $database);
$db->setFetchMode(Zend_Db::FETCH_OBJ);
$db->query("SET NAMES 'utf8';");
$db->query("SET CHARACTER SET 'utf8';");

Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::getInstance()->set('db', $db);

return $db;

OK、単純な fetchAll() を実行してループをチェックすると、次のようになります。

foreach ($rows as $row) {
    if ($row->id === 1) {
        echo 'first id';
    } else {
        echo 'other rows';
    }
}

"ID" = "1" (整数) の行がテーブルに存在しますが、何らかの理由で... PDO_Mysql を使用すると、データ型の比較 ("===" または "!==") を行うことができません。しかし、「Mysqli」アダプターを使用すると正常に動作します。

PDO_Mysql アダプターでは、各行の各列は「文字列」です (var_dump で確認すると)。

誰かが理由を知っていますか?

ありがとう。

4

0 に答える 0