[mysql]我 PDO 语句不工作

标签: MySQL PHP
发布时间: 2017/4/9 22:50:53
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

这是我的 PHP sql 语句和 var 倾倒时,它返回 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']));

解决方法 1:

如果 PDO 语句返回 FALSE ,这意味着该查询失败。您必须在适当的错误报告模式需要注意的错误设置 PDO。

把这条线在您的代码正确连接后

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

错误消息后,你必须阅读和理解它。这听起来太明显了,但学习者往往忽视极端的乐于助人的错误消息。然而大部分时间它解释非常简单的问题。说,如果说那特定的表不存在,你必须检查拼写,错别字,字母大小写、 凭据等。或者,如果它说 SQL 语法中的错误,然后您必须检查您的 SQL。问题点是右查询部分所述错误 messaage。

你必须还信任的错误消息。如果它说的标记数不匹配号码的绑定变量,那么它如此。同样缺席的表或列。给予选择,无论是你自己的错误或错误消息是错误的总是坚持前。再听起来屈尊俯就,但数百项非常本站问题证明这建议非常有用。


请注意,为了看到 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 所有的时间。

此外请注意,尽管常见的错觉,没有 try-catch 有用于错误报告。PHP 将报告你 PDO 错误已经,和最好的形式。未捕获的异常是很好的发展,然而如果你想要显示自定义的错误页,仍不使用 try-catch 为此,但只是设置自定义错误处理程序。简单地说,你不必将 PDO 错误视为一些特别的东西,但把它们看作你代码中的任何其他错误。

官方微信
官方QQ群
31647020