尝试使用PDO连接到错误的数据库时,PHP不显示错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了尝试使用PDO连接到错误的数据库时,PHP不显示错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1487字,纯文字阅读大概需要3分钟。
内容图文
![尝试使用PDO连接到错误的数据库时,PHP不显示错误](/upload/InfoBanner/zyjiaocheng/885/5e414d36ff1a4c9bbf5ca40a87eb476e.jpg)
我对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';
}
我的php.ini文件配置为显示错误,并使用以下值对其进行修改后重新启动了Apache:
error_reporting = E_ALL | E_STRICT
display_errors = On
display_startup_errors = On
log_errors = On
我还尝试在脚本的开头使用以下代码,但是它仍然没有显示与错误的数据库名称有关的错误
ini_set('display_errors', 1);
error_reporting(~0);
在此先感谢您的帮助,我敢肯定这可能是一件很愚蠢的事情,但老实说我无法弄清楚.
解决方法:
尽管这很简单,但却变成了一个棘手的错误,难以找到和解释.
问题是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不显示错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。