无法通过PHP连接MySQL,mysql工作,但不使用mysqli或PDO

时间:2014-05-23 03:14:10

标签: php mysql pdo mysqli

在我的连接脚本中,这有效,但不推荐使用。

$dbLink = mysql_connect($dbHostname, $dbUsername, $dbPassword) or die("Unable to connect to MySQL");
$dbselected = mysql_select_db($dbDatabase,$dbLink) or die("Could not select database");

如果我将其更改为使用PDO或mysqli,则会失败并显示

  

“未选择数据库”

在我的测试电脑上,或

  

“用户'xxxxxx'@'localhost'拒绝访问(使用密码:否)”

在我的直播网站上。

 $dbLink = mysqli_connect($dbHostname, $dbUsername, $dbPassword, $dbDatabase);

使用ini_get("mysqli.default_port")..读取并测试了类似的问题。新命令连接正常,但没有任何内容完成。

我的PDO代码是

$dbLink = new PDO('mysql:host=localhost;dbname=mass', $dbUsername, $dbPassword);

1 个答案:

答案 0 :(得分:0)

我说你的主要问题是依靠or die()来处理错误情况。这不会起作用,因为PDOmysqli构造函数都不会返回 falsey 值。

相反,您应该使用适当级别的错误处理。

开发环境

开发时,始终使用php.ini文件中的以下属性

display_errors = On
error_reporting = E_ALL

更改此文件后,您可能需要重新启动网络服务器(如果您正在使用网络服务器)。

的mysqli

检查connect_errno属性是否存在连接错误状态

$mysqli = new mysqli('localhost', 'username', 'password', 'dbname');
if ($mysqli->connect_errno) {
    throw new Exception($mysqli->connect_error, $mysqli->connect_errno);
}
$mysqli->set_charset('utf8');

PDO

PDO构造函数如果无法连接则抛出异常。将错误模式设置为 exception 意味着任何进一步的错误也会引发异常。

$pdo = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'username', 'password', [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);

在您开发过程中,我不会为任何try {...} catch语句而烦恼,至少在此初始阶段不会,因为您可能最终会隐藏任何严重错误。