【问题标题】:PHP PDO unable to insert the data in MySQL DBPHP PDO 无法在 MySQL DB 中插入数据
【发布时间】:2015-09-25 10:18:32
【问题描述】:

我正在学习 PHP。使用 XAMPPlocal 服务器进行测试。下面需要帮助 当我输入详细信息并单击表单中的注册时,我只看到一个带有 action.php 链接的空白页面。 action.php 的代码如下:

include 'config.php';
            error_reporting(E_ALL);
            ini_set('display_errors', 1);
            if(isset($_POST['register'])){
                require 'config.php';
                $first_name = !empty($_POST['fname']) ? trim($_POST['fname']) : null;
                $last_name = !empty($_POST['lname']) ? trim($_POST['lname']) : null;
                $user_name = !empty($_POST['uname']) ? trim($_POST['uname']) : null;
                $pass = !empty($_POST['upass']) ? trim($_POST['upass']) : null;
                $user_email = !empty($_POST['umail']) ? trim($_POST['umail']) : null;
                $sql = "INSERT INTO ams_users (id, firstname, lastname, username, password, email) 
                                      VALUES(?,?,?,?,?)";
                $stmt = $pdo->prepare($sql);

                $result = $stmt->execute(0,$first_name, $last_name, $user_name, $pass, $user_email);
                if($result){
                    echo 'Thank you for registering';
                }else{
                    echo 'sorry';
                    }
                }enter code here

register.php 表单代码如下:

<div class="reg-form">
        <h1>Register</h1>
        <form action="action.php" method="POST">
            <p><label>First Name* :</label> 
            <input id="firstname" type="text" name="fname" /></p>
            <p><label>Last Name* :</label> 
            <input id="lasttname" type="text" name="lname" /></p>

            <p><label>User Name* : </label>
            <input id="username" type="text" name="uname" /></p>

             <p><label>Password: </label>
             <input id="password" type="password" name="upass" /></p>
             <p><label>E-Mail: </label>
             <input id="e-mail" type="e-mail" name="umail"/></p>

            <input type="submit" name="submit" value="register" />
            </form>
        </div>

MySQL 表有 5 个条目:id(自动增量、名字、姓氏、用户名、密码和电子邮件。

please help where I am going wrong.

【问题讨论】:

  • 您是否遇到任何错误?另外为什么enter code here 在您的源代码中?这不是有效的 PHP,因此您可能在此处遇到语法错误。

标签: mysql forms pdo insert registration


【解决方案1】:
  • execute() 不像你那样直接接受一组参数。
  • 问号比参数少
  • 如果您设置 id AUTOINCREMENTED,那么您可以在查询中省略它

这样就变成了:

INSERT INTO ams_users (firstname, lastname, username, password, email) 
VALUES(?,?,?,?,?)

然后你执行:

$result = $stmt->execute(array($first_name, 
                               $last_name, 
                               $user_name, 
                               $pass, 
                               $user_email)
                 );

或者:

INSERT INTO ams_users (id,firstname, lastname, username, password, email) 
VALUES('',?,?,?,?,?)

问题是你应该得到错误,所以请确保它已打开:

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

【讨论】:

  • 错误语句在我的 config.php 文件中。当我不使用数组方法时,它工作正常。
  • 我会尝试 meda 的方法 todat,如果我还有问题,请告诉您。谢谢
  • 您好,我检查过我使用了错误的连接变量 $pdo 而不是 $db。这就是没有显示错误的原因。
  • 我还有一个问题,我已将 id 定义为表结构中的自动增量。但是当抛出 PDO 异常/错误时,id 仍然会增加而没有任何成功的插入操作。如何确保 id 仅在成功插入数据库时​​自动递增,而不是在每次连接尝试时自动递增???
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多