这是一个仅限 PDO 的可视化,因为该mysql_*
库已被弃用。
<?php
// Begin Vault (this is in a vault, not actually hard-coded)
$host="hostname";
$username="GuySmiley";
$password="thePassword";
$dbname="dbname";
$port="3306";
// End Vault
try {
$dbh = new PDO("mysql:host=$host;port=$port;dbname=$dbname;charset=utf8", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "I am connected.<br/>";
// ... continue with your code
// PDO closes connection at end of script
} catch (PDOException $e) {
echo 'PDO Exception: ' . $e->getMessage();
exit();
}
?>
请注意,这个 OP 问题毕竟似乎与端口号无关。如果你使用的是3306
always的默认端口,那么考虑将其从uri中移除,即移除port=$port;
部分。
$port
如果您经常更改端口,请考虑上述端口使用情况,以提高对变量进行更改的可维护性。
从上面返回的一些可能的错误:
PDO Exception: SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
PDO Exception: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known.
在下面的错误中,我们至少在改变我们的连接信息后越来越近了:
PDO Exception: SQLSTATE[HY000] [1045] Access denied for user 'GuySmiley'@'localhost' (using password: YES)
经过进一步的改变,我们现在真的很接近了,但并不完全:
PDO Exception: SQLSTATE[HY000] [1049] Unknown database 'mustard'
来自PDO 连接手册: