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 で確認すると)。
誰かが理由を知っていますか?
ありがとう。