Php Zend Framwork 2-mysqli连接配置和测试示例
我正在尝试通过给定的框架应用程序学习Zend Framework 2,但是我以前在Zend方面没有任何经验。我确实从其他框架了解MVC,例如yii、symfony 我的框架应用程序似乎加载良好,然后下一步是在应用程序中配置MySQL db连接。所以我尝试了以下问题的答案: 但这对我不起作用,所以我想知道为什么。我的代码是: 在Php Zend Framwork 2-mysqli连接配置和测试示例,php,zend-framework2,zend-db,Php,Zend Framework2,Zend Db,我正在尝试通过给定的框架应用程序学习Zend Framework 2,但是我以前在Zend方面没有任何经验。我确实从其他框架了解MVC,例如yii、symfony 我的框架应用程序似乎加载良好,然后下一步是在应用程序中配置MySQL db连接。所以我尝试了以下问题的答案: 但这对我不起作用,所以我想知道为什么。我的代码是: 在config/autoload/文件夹中,我创建了一个名为db.local.php的文件,并添加了以下内容: return array( 'db' => arr
config/autoload/
文件夹中,我创建了一个名为db.local.php的文件,并添加了以下内容:
return array(
'db' => array(
'driver' => 'Mysqli',
'database' => 'xxx',
'username' => 'sxxx',
'password' => 'xxxE',
'hostname' => 'localhost'
),
'service_manager' => array(
'aliases' => array(
'db' => 'Zend\Db\Adapter\Adapter',
),
),
);
在文件IndexController.php的/module/Application/src/Application/controller
中的默认控制器中,我添加了以下内容来测试db,但我没有看到任何错误或此控制器的任何输出:
public function indexAction()
{
$this->layout()->myvar = 'bla';
$db=$this->getServiceLocator()->get('db');
//var_dump($db); nothing comes here too.
$statement= $db->query('SELECT * FROM `ew_content` WHERE `con_id` = 1');
var_dump($statement); // this also empty
$isconnected = $db->getDriver()->getConnection()->isConnected();
if($isconnected){
$message = 'connected';
} else {
$message = 'not Valid data field';
}
//no output here either
return new ViewModel(array(
'customMessageForgotPassword' => 'Error!',
));
}
感谢akond,实际问题似乎是我在服务管理器配置中对db对象进行了工厂创建。因此,我必须在db.local.php中添加以下行
'service_manager' => array(
'factories' => array(
'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
),
),
配置的完整工作代码如下所示
return array(
'db' => array(
'driver' => 'Mysqli',
'username' => 'xxx',
'password' => 'xxx',
'database' => 'xxxx',
'host' => 'localhost'
),
'service_manager' => array(
'factories' => array(
'translator' => 'MvcTranslator',
'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
),
'aliases' => array(
'db' => 'Zend\Db\Adapter\Adapter',
),
),
);
感谢akond,实际问题似乎是我在服务管理器配置中对db对象进行了工厂创建。因此,我必须在db.local.php中添加以下行
'service_manager' => array(
'factories' => array(
'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
),
),
配置的完整工作代码如下所示
return array(
'db' => array(
'driver' => 'Mysqli',
'username' => 'xxx',
'password' => 'xxx',
'database' => 'xxxx',
'host' => 'localhost'
),
'service_manager' => array(
'factories' => array(
'translator' => 'MvcTranslator',
'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
),
'aliases' => array(
'db' => 'Zend\Db\Adapter\Adapter',
),
),
);
等等,你的行动有什么结果吗?您是否尝试过回显hello
以查看该文件是否被打印?是的,它将转到正确的控制器,回显hello正在打印,我们是否需要添加任何设置以添加新文件db.local.php?或者我需要在配置中执行其他操作吗?确保您没有错过“服务\u管理器”=>数组('factories'=>数组('Zend\Db\Adapter\Adapter'=>'Zend\Db\Adapter\AdapterServiceFactory',),,,),
部分:是的,这是问题所在,我没有'factories'=>数组这一行('Zend\Db\Adapter\Adapter'=>'Zend\Db\Adapter\AdapterServiceFactory'Wait是否从您的操作中获得任何输出?您是否尝试过回显hello
以查看该文件是否被打印?是的,它将转到正确的控制器,回显hello正在打印,我们是否需要添加任何设置以添加新文件Db.local.php?或者是否有任何设置我还需要在配置中执行其他操作吗?请确保您没有错过'service\u manager'=>数组('factories'=>数组('Zend\Db\Adapter\Adapter'=>'Zend\Db\Adapter\Adapter\Adapter\adapters服务工厂',),,,
部分。:D是的,这就是问题所在,我没有'factories'=>数组这一行('Zend\Db\Adapter\Adapter'=>'Zend\Db\Adapter\AdapterServiceFactory'