【问题标题】:My PDO insert gives no error... but its not inserting in my database [duplicate]我的 PDO 插入没有错误......但它没有插入我的数据库中[重复]
【发布时间】:2014-03-28 16:33:29
【问题描述】:

我的插入有一些问题。

我在下面有这段代码,当我点击提交按钮进行订阅时,我没有收到任何错误,但我的数据库中没有收到插入。

这是一个奇怪的情况,因为一切似乎都是正确的:

-> 我没有任何错误信息

-> 如果我回显echo $email;echo $code;,则变量具有正确的值

->表名正确

您能在此处看到可能导致此问题的内容吗?

我的 PHP:

 <?php 

    if(isset($_POST['newsletter_subscription']) && $_POST['newsletter_subscription'] == 'register')
      {
        $email = $_POST['email'];
        $code = md5($email);

        try
          {                 
            $subscription = $pdo->prepare("INSERT into subscriptions (email,code,status) VALUES = :email,:code,:status");  
            $subscription->bindValue(":email", $email);  
            $subscription->bindValue(":code", $code); 
            $subscription->bindValue(":status", 'inactive'); 
            $subscription->execute();
           }
         catch(PDOException $e)
           {
            $e->getmessage();
           }                        
        }
    ?>

我的 HTML 表单:

 <form action="" name="newsletter" method="post" enctype="multipart/form-data">
     <label>
         <input type="text"id="email2" name="email" placeholder="  e-mail"  required/>
     </label>
     <br />
     <label id="submit">
         <input type="hidden" name="newsletter_subscription" value="register" />
         <input type="submit" name="register" value="Register" src="" />
      </label>
</form>

【问题讨论】:

  • 我认为INSERT 的语法不正确。
  • 你绑定参数的名字是错误的,把:codigo改成:code:estado改成:status
  • 抱歉,这不是问题所在。我正在翻译英语,我忘记更正那个名字。对不起!
  • PDO 默认不抛出异常。您必须启用一个属性才能做到这一点。见php.net/manual/en/pdo.error-handling.php

标签: php mysql sql pdo


【解决方案1】:

您的 INSERT 语法略有偏差:

"INSERT into subscriptions (email,code,status) VALUES = :email,:code,:status"

应该是

"INSERT into subscriptions (email,code,status) VALUES (:email,:code,:status)"

【讨论】:

  • 谢谢!这才是正确答案。但是你不觉得我的 try-catch 块没有收到错误很奇怪吗?
  • 是的,您可能需要在脚本顶部添加 error_reporting(E_ALL); 才能看到错误。
  • @larsAnders 从现在开始您也可以使用PDO errorCodePDO errorInfo
【解决方案2】:

您在sql 中使用$codigo,但在绑定中使用$code

另外,INSERT 应该看起来像这样:

$subscription = $pdo->prepare("INSERT into subscriptions (email,code,status) VALUES (:email,:code,:status)")

总体:

try
{                 
  $subscription = $pdo->prepare("INSERT into subscriptions (email,code,status) VALUES (:email,:code,:status)");  
  $subscription->bindValue(":email", $email);  
  $subscription->bindValue(":code", $code); 
  $subscription->bindValue(":status", 'inactive'); 
  $subscription->execute();
 }
 catch(PDOException $e)
 {
   $e->getmessage();
 }

【讨论】:

    猜你喜欢
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多