PHP PDO:无法连接,无效的目录名称

Tri*_*ham 9 php mysql sql mysqli pdo

我正在尝试在我的主机上建立一个新站点(主机路由,如果它很重要)但我在尝试使用PDO时遇到此错误(第一个PDO站点我正在尝试):

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected' in /home/kennyi81/public_html/gamersite/login.php:36 Stack trace: #0 /home/kennyi81/public_html/gamersite/login.php(36): PDOStatement->execute() #1 {main} thrown in /home/kennyi81/public_html/gamersite/login.php on line 36
Run Code Online (Sandbox Code Playgroud)

当我使用这些设置时:

$dbh = new PDO("mysql:91.146.107.11;dbname=kennyi81_gamersite", "kennyi81_gamer", "***************");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

....

$stmt = $dbh->prepare('SELECT * FROM USERS WHERE ID = :id LIMIT 1');
Run Code Online (Sandbox Code Playgroud)

如何布置数据库:

在此输入图像描述

我可以在我的其他子域/主站点上使用mysqli connect fine,但我无法让PDO工作.

我试过这个,我见过:

 $stmt = $dbh->prepare('SELECT * FROM gamersite.USERS WHERE ID = :id LIMIT 1');
Run Code Online (Sandbox Code Playgroud)

但它重新调整了语法错误.

任何人都知道这可能导致什么?


这一切都在我的本地服务器上运行,除了连接线之外没有任何改变.

小智 12

代替:

$dbh = new PDO("mysql:91.146.107.11;dbname=kennyi81_gamersite", "kennyi81_gamer", "***************");
Run Code Online (Sandbox Code Playgroud)

尝试:

$dbh = new PDO("mysql:host=91.146.107.11;dbname=kennyi81_gamersite", "kennyi81_gamer", "***************");
Run Code Online (Sandbox Code Playgroud)

(添加host =)

它很可能在你的本地服务器上工作,因为你有mysql:localhost...或者mysql:127.0.0.1...它被忽略(因为它缺少host = aswell)并且默认情况下它是localhost.