我已尝试过两种不同类型的PDO连接,它们都在localhost上工作正常,但只有其中一种在远程服务器上正常工作,即使它们都使用完全相同的凭据。
第一个在localhost和远程上工作的是:
try {
$pdo = new PDO('mysql:host=xx.xxx.xxx.xx; dbname=dbxxxx', 'uxxxx', 'pxxxx');
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
die();
}
第二个仅使用与上述完全相同的凭据在本地工作:
echo "hello";
error_reporting(E_ALL);
ini_set("display_errors", 1);
$databaseHost = 'xx.xxx.xxx.xx';
$databaseName = 'dbxxxx';
$databaseUsername = 'uxxxx';
$databasePassword = 'pxxxx';
//$port="3306";
$charset = 'utf8';
try {
//$dsn = "mysql:host=$databaseHost;port=$port;dbname=$databaseName;charset=$charset";
$dsn = 'mysql:host=$databaseHost;dbname=$databaseName;charset=$charset';
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $databaseUsername, $databasePassword, $opt);
} catch(PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
所以,我很困惑为什么顶部的工作而不是底部工作。
-Thanks