PHP PDO 无法在 MySQL DB 中插入数据

PHP PDO unable to insert the data in MySQL DB

我正在学习PHP.using XAMPP本地服务器进行测试。在下方需要帮助 当我输入详细信息并单击表单中的注册时,我只看到一个带有 action.php link 的空白页面。 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 table 有 5 个条目:id(自动增量、名字、姓氏、用户名、密码和电子邮件。

please help where I am going wrong.
  • 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);