大佬教程收集整理的这篇文章主要介绍了尝试使用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,请注明来意。