Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter mysql数据库与Amazon RDS的连接失败_Php_Mysql_Codeigniter_Amazon Rds - Fatal编程技术网

Php Codeigniter mysql数据库与Amazon RDS的连接失败

Php Codeigniter mysql数据库与Amazon RDS的连接失败,php,mysql,codeigniter,amazon-rds,Php,Mysql,Codeigniter,Amazon Rds,在搜索了几个小时之后,我对这件事感到最糟糕 我与Amazon RDS凭据的连接是正确的,但是,我无法提取任何数据,并且我从下面得到了一个500错误 为了避免任何CI错误,我采用了最原始的编码,在我的模型上: class Foreclosure_model extends CI_Model { public function __construct() { parent::__construct(); $this->db = $this->load->dat

在搜索了几个小时之后,我对这件事感到最糟糕

我与Amazon RDS凭据的连接是正确的,但是,我无法提取任何数据,并且我从下面得到了一个500错误

为了避免任何CI错误,我采用了最原始的编码,在我的模型上:

class Foreclosure_model  extends CI_Model {
public function __construct() {
    parent::__construct();

     $this->db = $this->load->database('aws');

}

function get_sql_results($state,$county){

return $this->db->query("select State, County from foreclosure_properties     where State = 'CA' AND County = 'del norte'");
 }
}
在我的控制器上,我有:

$this->data['listings'] = $this->foreclosure_model->get_sql_results($state,$county);
关于我的aws连接信息,我有:

$db['aws']['hostname'] = 'XXXXXXXXXXXXX.us-west-2.rds.amazonaws.com';
$db['aws']['username'] = 'XXXXXXXX';
$db['aws']['password'] = 'XXXXXXXX';
$db['aws']['database'] = 'xxxxxx_xxxxxx';
$db['aws']['dbdriver'] = 'mysql';
$db['aws']['dbprefix'] = '';
$db['aws']['pconnect'] = TRUE;
$db['aws']['db_debug'] = TRUE;
$db['aws']['cache_on'] = FALSE;
$db['aws']['cachedir'] = '';
$db['aws']['char_set'] = 'utf8';
$db['aws']['dbcollat'] = 'utf8_general_ci';
$db['aws']['swap_pre'] = '';
$db['aws']['autoinit'] = TRUE;
$db['aws']['port'] = 3306;
我曾尝试直接使用Navicat进行完全相同的连接,以测试sql连接和查询,它成功地工作了。我似乎无法让它在Codeigniter中运行

在Codeigniter上运行时的结果是500错误


非常感谢您的帮助。

当您使用多个连接时,您需要传入第二个参数“TRUE”以返回数据库对象

$this->db = $this->load->database('aws', TRUE);
如果不传递此消息,则不会返回数据库对象,因此无法调用任何函数(如get()、query()等)

您可以在此处阅读有关多个连接的更多信息:

希望这有帮助-让我知道你进展如何


注意:值得一提的是,如果您没有将数据库分配给$this->db,而是选择了另一个名称,例如$this->aws\u db,那么您就不会覆盖默认数据库的$this->db对象,这可能会使事情变得更简单。可能不是什么大问题,但随着项目的发展,可能更容易进行故障排除。

您是否从POST请求中获得
$state
$county
?如果是,检查是否启用了
CSRF
。是$state和$country,从函数内部的post中选择如果只是“echo”可以正常工作,则禁用CSRF。我真的被卡住了。另外,如果有帮助的话,这是第二个数据库连接。这不是主数据库,我们正在连接$db['aws'];不确定这是否有什么区别是AWS上的Codeigniter框架?从Navicat建立连接不会有多大作用,因为它是一个桌面mysql gui客户端,并且它从该位置建立连接。创建一个简单的.php文件并建立db连接,以确保没有任何服务器问题。此外,请检查您的AWS安全组,以确保允许您从原始服务器连接到RDS。此外,您需要确保您正在从CodeIgniter所在的服务器与RDS db进行简单连接;返回$query->result()在您的模型中