我正在使用 PHP 为我的网站创建用户注册表单,并将用户数据“发布”到我的 SQL 数据库。当我创建前两个用户时,它将用户信息发布到我的数据库中,例如用户名和电子邮件,每个字段都有一行 NULL。我没有更改 PHP 代码中的任何内容,但现在当我创建用户时,它会向数据库添加一个新行,但所有字段均为 NULL,以及密码的哈希码。我不知道为什么它会显示为 NULL。下面我将包含我的 register.php 代码。
<?php
#session_start();
#if(isset($_SESSION['User']))
#{
# header("Location: home.php");
#}
include_once 'dbconnect.php';
#if(isset($_POST['submit']))
#
$uname = $_POST['uname'];
$email = $_POST['email'];
$upass = $_POST['upass'];
$stmt = $dbh->prepare("SELECT COUNT(*) as `emailcount` FROM `User` WHERE email=:email");
$stmt->execute(array("email" => $_POST['email']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ($row['emailcount'] > 0) {
echo "<script>alert('Email $email already exists in our system. Please try another email')</script>";
} else {
$stmt = $dbh->prepare("INSERT INTO User(`uname`, `email`, `upass`) VALUES (:uname, :email, :upass)");
$stmt->execute(array("uname" => $_POST['uname'], "email" => $_POST['email'], "upass" => md5($_POST['upass'])));
}
?>
我还将在此处添加我们正在使用的 HTML 表单
<form method='post' action='register.php'>
<pre>
<div>
<label>Name : (letters only)*</label>
<input type="text" name="uname" pattern="[A-Za-z]+" title="only letters" required />
</div>
<div>
<label>E-mail : (xyz@zyx.com)*</label>
<input type="email" name="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$" title="xyz@something.com" required />
</div>
<div>
<label>password : (at least 6 chars)</label>
<input type="password" name="upass" pattern=".{6,}" title="Six or more characters" required />
</div>
<input type='submit' name='submit' value='Sign Up'>
</pre>
</form>
最佳答案
您是否曾在没有帖子提交的情况下访问register.php
?因为如果您在没有提交的情况下进入该页面,插入仍然会执行,但您的变量将全部为 null
因为它们仅在 $_POST['submit'] 时设置
已设置。
如果是这种情况,请尝试以下操作:
if(isset($_POST['submit']))
{
$uname = $_POST['uname'];
$email = $_POST['email'];
$upass = $_POST['upass'];
$stmt = $dbh->prepare("SELECT COUNT(*) as `emailcount` FROM `User` WHERE email=:email");
$stmt->execute(array("email" => $_POST['email']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if ($row['emailcount'] > 0) {
echo "<script>alert('Email $email already exists in our system. Please try another email')</script>";
} else {
$stmt = $dbh->prepare("INSERT INTO User(`uname`, `email`, `upass`) VALUES (:uname, :email, :upass)");
$stmt->execute(array("uname" => $_POST['uname'], "email" => $_POST['email'], "upass" => md5($_POST['upass'])));
}
}
关于PHP 表单在创建用户帐户时将 NULL 行添加到我的 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37038446/