PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了尝试使用PDO连接到错误的数据库时,PHP不显示错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我对PHP相当陌生,尽管遇到了类似的问题,但我遇到了一个非常基本的问题,但找不到解决方案.

我正在尝试通过PDO将PHP数据库(MysqL)连接.如果我输入了错误用户名或密码,PHP确实会在浏览器中显示一个错误,但是如果我输入了错误数据库名称,它不会撤消任何错误.这怎么可能?我的代码如下:

<?PHP
try{
    $conn = new PDO('MysqL:127.0.0.1;dbname=myDb','root','root');
    $conn -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOexception $E){
    echo 'wrong credentials';
}
@H_673_8@

我的PHP.ini文件配置为显示错误,并使用以下值对其进行修改后重新启动了Apache:

error_reporTing  =  E_ALL | E_StriCT
display_errors = On
display_startup_errors = On
log_errors = On
@H_673_8@

我还尝试在脚本的开头使用以下代码,但是它仍然没有显示错误数据库名称有关的错误

ini_set('display_errors', 1);
error_reporTing(~0);
@H_673_8@

在此先感谢您的帮助,我敢肯定这可能是一件很愚蠢的事情,但老实说我无法弄清楚.

解决方法:

尽管这很简单,但却变成了一个棘手的错误,难以找到和解释.

问题是dsn字符串不正确.

当前值:’MysqL:127.0.0.1; dbname = myDb’

它应该是:’MysqL:host = 127.0.0.1; dbname = myDB’注意:host =丢失.

但是,PDO无法正确验证dsn参数字符串,并且连接到Localhost数据库时不会出现任何错误.

但是,它已忽略了dbname参数,因此,当您尝试查询时,将收到错误消息:1046未选择数据库.

澄清正在发生的事情(请参见下面的Alfredo Delgado):
   PDO完全忽略格式错误的参数,并假定您要使用Localhost数据库. ;-/

正如阿尔弗雷多·德尔加多(Alfredo Delgado)所述:

…“在dsn中没有host =的结果是,PDO认为localhost.由于我碰巧拥有数据库的本地副本,所以我浪费了很多时间来追逐诸如权限之类的红色鲱鱼.”

大佬总结

以上是大佬教程为你收集整理的尝试使用PDO连接到错误的数据库时,PHP不显示错误全部内容,希望文章能够帮你解决尝试使用PDO连接到错误的数据库时,PHP不显示错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: