我有一个PDO的问题,我看到绝对没有他来的地方。我不能质疑我的MySQL数据库。只是为了测试我使用了以下代码(有相当酸之前配置的连接参数:
$dbh= new PDO('mysql:host=serverName;dbname=Mydatabase','user','password');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
var_dump($dbh); // gives : object(PDO)#1 (0) { }
$res=$dbh->query('SELECT * FROM table');
连接是正确的MySQL,但查询后,我得到这个错误:
致命错误:未捕获异常“PDOException”并显示消息“SQLSTATE[3D 000]:无效的目录名:1046没有选择数据库' in /home/outout/public_html/file.php:16堆栈跟踪:#0 /主页/输出/公共_html/文件.php(16):PDO-〉查询('select * from t...')#1 {main}在第16行的/home/outout/public_html/file. php中抛出。
这段代码可以在本地机器上运行,但是我一把它放到网上(cPanel)它就显示这个错误。我必须在.htaccess中配置PDO吗?
我完全不明白问题出在哪里。有人会有办法吗?
9条答案
按热度按时间fykwrbwg1#
您犯了一些错误或打字错误。请确保数据库 * 存在于您要连接的服务器 * 上,并在DSN中正确设置,如下所示
没有空格或其他符号。字符大小写也很重要。
应该可以
1tu0hz3e2#
我遇到了同样的问题,但没有在“mysql”(mysql:host)中提到“host”字符串,我通过以下代码解决了这个问题。
tyg4sfes3#
取代:
只要做到:
你就可以走了。
sigwle7e4#
我遇到了同样的问题。解决问题的方法是删除hostname和dbname变量之间的空格,如下所示:发件人:$conn =新PDO(“mysql:主机= $服务器名;数据库名称= $数据库名称”,$用户名,$密码);
收件人:$conn =新PDO(“mysql:host=$服务器名;数据库名称=$数据库名称”,$用户名,$密码);
vq8itlhq5#
这是错误的,你不能有主机=服务器名,相反,你需要有像主机=$服务器名,然后$服务器名=“服务器名.域”;与dbname=Mydatabase相同,您需要将这些变量$Mydatabase=“mydatabase”设置为如下所示:
这将起作用。更多详细信息:http://www.w3schools.com/php/php_mysql_connect.asp
我也有同样的错误,这是因为我没有在字符串中使用dbname=$dbname,而是使用了$dbname=$dbname,这只是一个打字错误。您需要正确地编写字符串!
drnojrws6#
让我感到困惑的是,我从MySQL工作台的树中复制了数据库名称,并将其粘贴到settings.php文件中。结果发现字符串开头和结尾的撇号是假撇号!我删除了它们,并放入了真实的的撇号,所有东西都启动了。我花了几个小时才弄明白。希望这对其他人有所帮助。
hjzp0vay7#
使用关键字相同的dbname不更改它们
tpxzln5u8#
对于面临同样问题的任何人,如果在dsn中在dbname之前键入port,则会给出相同的错误
所以更换了
与
请注意端口和数据库名称的顺序
bsxbgnwa9#
用途
代替