php – 我的PDO语句不起作用

前端之家收集整理的这篇文章主要介绍了php – 我的PDO语句不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的 PHP sql语句,它在var dumpping时返回false
$password_md5 = md5($_GET['password']);
$sql = $dbh->prepare('INSERT INTO users(full_name,e_mail,username,password,password_plain) VALUES (:fullname,:email,:username,:password,:password_plain)');
$result = $sql->execute(array(
                    ':fullname' => $_GET['fullname'],':email' => $_GET['email'],':username' => $_GET['username'],':password' => $password_md5,':password_plain' => $_GET['password']));
如果PDO语句返回FALSE,则表示查询失败.您必须将PDO设置为正确的错误报告模式以了解错误.

连接后立即将代码放在代码

$dbh->setAttribute( PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION );

收到错误消息后,您必须阅读并理解它.这听起来太明显了,但是学习者经常忽略错误信息的极端帮助.然而大多数时候它很简单地解释了这个问题.说,如果它表示特定的表不存在,你必须检查拼写,打字错误,字母大小写,凭据等.或者,如果它说sql语法有错误,那么你必须检查你的sql.问题点在错误消息中引用的查询部分之前.

您还必须信任该错误消息.如果它表示令牌的数量与绑定变量的数量不匹配,那就是这样.缺席的表或列也是如此.给予选择,无论是自己的错误还是错误信息都是错误的,始终坚持前者.再次,这听起来很高兴,但是在这个网站上的数百个问题证明了这个建议非常有用.

请注意,为了看到PDO错误,您必须能够看到PHP错误.要做到这一点,你必须配置PHP取决于站点环境:

>在开发服务器上,在屏幕上出现错误是非常方便的,因为显示错误必须打开:

error_reporting(E_ALL);
ini_set('display_errors',1);

>而在现场网站上,所有错误都必须记录下来,但不会向客户显示.为此,以这种方式配置PHP

error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);

请注意,error_reporting应该始终设置为E_ALL.

还要注意的是,尽管常见的错误,no try-catch have to be used for the error reporting. PHP将会报告您的PDO错误已经,并以更好的形式.一个未被捕获的异常非常适合开发,但是如果要显示一个自定义错误页面,仍然不要使用try catch来实现,而只是在set custom error handler.简而言之,您不必将PDO错误视为特殊的但将它们视为您的代码中的任何其他错误.

原文链接:https://www.f2er.com/php/131434.html

猜你在找的PHP相关文章