我正在尝试将我的codeigniter框架连接到外部数据库 . 但它显示错误
发生数据库错误无法使用提供的设置连接到数据库服务器 . 文件名:core / Loader.php行号:346
然后,我将这一个插入到config / database.php的末尾
echo '<pre>';
print_r($db['default']);
echo '</pre>';
echo 'Connecting to database: ' .$db['default']['database'];
$dbh=mysql_connect
(
$db['default']['hostname'],
$db['default']['username'],
$db['default']['password'])
or die('Cannot connect to the database because: ' . mysql_error());
mysql_select_db ($db['default']['database']);
echo '
Connected OK:' ;
die( 'file: ' .__FILE__ . ' Line: ' .__LINE__);
但它表明
遇到PHP错误严重性:8192消息:mysql_connect():不推荐使用mysql扩展,将来将删除:使用mysqli或PDO而不是文件名:config / database.php行号:79遇到PHP错误严重性:警告消息:mysql_connect():无法连接到'167.114.xxx.xxx'上的MySQL服务器(111)文件名:config / database.php行号:79无法连接到数据库,因为:无法连接到MySQL '167.114.xxx.xxx'上的服务器(111)
然后我试图在codeigniter目录之外创建这个(在public_html中)
<?php
$servername = "167.114.xxx.xxx";
$username = "myusername";
$password = "dbpass";
$database = "dbname";
// Create connection
$conn = mysql_connect($servername, $username, $password, $database);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
它显示连接成功 . 所以我该怎么做?而config / database.php中的db细节与上面相同
2 回答
默认情况下,MySQL将拒绝来自外部的连接 .
你的MySQL服务器在哪里?通常,如果您使用某些Web托管服务,它们允许您从CPanel解锁外部连接 . 请注意,大多数需要一些时间才能使其真正活跃 .
此外,请注意
mysql_connect
不返回对象,而只返回资源(连接ID) . 因此,如果您真的想继续使用已弃用的(旧)MySQL API,请执行以下操作:但是,建议使用像MySQLi或PDO这样的东西,因为长时间不更新,缺乏OOP支持,缺乏新的MySQL功能支持等等,不推荐使用MySQL扩展 .
使用MySQLI的替代方案,来自PHP手册:
1)查看
/etc/mysql/my.cnf
文件并使其具有以下行:2)运行
/etc/init.d/mysql restart
或类似的东西重新启动mysql以从外部打开连接3)进入mysql控制台并执行:
4)在你的
config/database.php
中有这个代码