最近在用zend_framework搭建一个站点时,遇到数据库连接及编码问题,由于只是储备的匮乏,导致很长的工作才找到简单的原因。
所遇到的问题为:
在查询完数据之后,前台总是抛出关于数据库的异常,如下:
Notice: Array to string conversion inD:\WWW\include\Zend\Db\Adapter\Pdo\Abstract.php on line
75
但是zf并未给出具体的提示,进入zf发现Abstract.php的75行是在连接数据库。
由于我是把数据库配置在配置文件application.ini中,所以在代码中直接获得适配器,代码如下:
public function test ()
{
$db=$this->getAdapter() ;
var_dump($db);
$select=$db->select();
try {
$select ->from ('test','*');
$select->where('log_id = 1' );
}
catch (Exception $e)
{
echo $e;
}
$result = $db->fetchAll($select);
}
而且也捕捉不到异常
后来测试其他连接方式:
$params = array('host'=>'localhost','username'=>'root','password'=>'root','dbname'=>'shadow');
$db = Zend_Db::factory('PDO_Mysql',$params);
var_dump($this);
$select = $db->select();
工作正常。
确定为适配器的配置问题,检查配置文件发现为此句
resources.db.params.driver_option.1002 ="SET NAMES UTF8;"
主要是用来解决编码问题的,但是不知为什么会与适配器初始化冲突....