我在注册人员时遇到问题。我试过登录,效果很好。
数据库的脚本
创建表格用户信息(userid INT(4)UNSIGNED NOT NULL AUTO_INCREMENT主键,name VARCHAR(25)NOT NULL,密码VARCHAR(15)不为空,电子邮件VARCHAR(35)不为空);
PHP代码
$emailErr = $passMismatch = "";
if( isset($_POST['submit']) ){
if ( $_SERVER["REQUEST_METHOD"] == "POST" ) {
$name = $_REQUEST['name'];
$pwd = $_REQUEST['password'];
$cpwd = $_REQUEST['cpassword'];
$email = $_REQUEST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "ERROR::Invalid E-Mail Format";
} else $emailErr = "";
if ( $pwd != $cpwd ) {
$passMismatch = "ERROR::Passwords Don't Match";
} else $passMismatch = "";
$host = "localhost";
$username = "root";
$password = "";
$database = "ontheway";
$conn = mysqli_connect($host, $username, $password, $database);
if ( empty($emailErr) && empty($passMismatch) ) {
$sql = "INSERT INTO userinfo (userid, name, password, email)
VALUES (NULL, $name', $pwd', '$email')";
$result = mysqli_query($conn, $sql);
if ( !$result ) {
echo "chala nahi query";
}
if ( $result ) {
session_start();
$_SESSION['name'] = $name;
$_SESSION['pass'] = $pass;
header("location: home.php");
}
}
}
}
我试着回显问题,但找不到任何问题,$name、$pwd、$cpwd、$email都在回显。甚至错误也完美地显示在表单上。数据库也在连接中。问题出在哪里?请帮忙:)
我总是得到"chala nahi query",这意味着每次运行这个查询sql都不起作用。
表单代码
名称:
<input type="text" name="name" /> <br />
<p>Password: </p>
<input type="password" name="password" /> <br />
<?php echo '<h1>'.$passMismatch.'</h1>'; ?>
<p>Confirm Password: </p>
<input type="password" name="cpassword" /> <br />
<p>Email: </p>
<input type="email" name="email" /> <br />
<?php echo '<h1>'.$emailErr.'</h1>'; ?>
<input type="submit" name="submit" />
userid
,因为它已经是autoincremented
$sql = "INSERT INTO userinfo (`name`, `password`, `email`)
VALUES ('".$name."', '".$pwd."', '".$email."')";
查询中缺少一个围绕查询中$name和$pwrd变量的引号,应该是;
$sql = "INSERT INTO userinfo (userid, name, password, email)
VALUES (NULL, '$name', '$pwd', '$email')";
你应该研究PDO和绑定参数——更安全。此外,你应该对输入进行消毒,并且你的页面上应该只有1个H1元素。