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);
我正在学习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);