Zend framework PDO_Mysql适配器-数据类型比较(相同比较)

Zend framework PDO_Mysql适配器-数据类型比较(相同比较),zend-framework,pdo,comparison,Zend Framework,Pdo,Comparison,我在Zend中使用PDO_Mysql适配器时遇到了一些问题 application.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.pr

我在Zend中使用PDO_Mysql适配器时遇到了一些问题

application.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 init

$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;
好的,当我执行一个简单的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检查时)

有人知道原因吗


谢谢。

您可以简单地将$row->id转换为整数进行比较:intval($row->id)==1或相反:$row->id='1'好的,是的。。。但是我的问题是为什么在PDO_Mysql中不可能进行简单的相同比较。。。仅适用于MySQLI如果您尝试将Fetch模式更改为Fetch_OBJ以外的其他模式,则整数可能会转换为字符串,因为PDO为Fetch_OBJ Fetch模式实现_toString的方式不同。此外,如果你知道它是一个字符串,你仍然可以比较为
==“1”
,只要说