在我的连接脚本中,这有效,但不推荐使用。
$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);
答案 0 :(得分:0)
我说你的主要问题是依靠or die()
来处理错误情况。这不会起作用,因为PDO
和mysqli
构造函数都不会返回 falsey 值。
相反,您应该使用适当级别的错误处理。
开发时,始终使用php.ini
文件中的以下属性
display_errors = On
error_reporting = E_ALL
更改此文件后,您可能需要重新启动网络服务器(如果您正在使用网络服务器)。
检查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
构造函数应如果无法连接则抛出异常。将错误模式设置为 exception 意味着任何进一步的错误也会引发异常。
$pdo = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'username', 'password', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
在您开发过程中,我不会为任何try {...} catch
语句而烦恼,至少在此初始阶段不会,因为您可能最终会隐藏任何严重错误。