<?php
$db = mysqli_connect('localhost', 'username', 'password', 'database');
$username = "";
$password = "";
$regcode = "";
if (isset($_POST['submit'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$regcode = $_POST['regcode'];
$sql_R = "SELECT * FROM regcode WHERE regcode='$regcode'";
$sql_R2 = "SELECT * FROM staff WHERE regcode='$regcode'";
$res_R2 = mysqli_query($db, $sql_R2);
$res_R = mysqli_query($db, $sql_R);
if ((mysqli_num_rows($res_R) > 0) && (mysqli_num_rows($res_R2) < 1)){
$query = "INSERT INTO staff (username, password, regcode)
VALUES ('.$username.', '.$password.', '".$regcode."')";
$results = mysqli_query($db, $query);
echo file_get_contents("register.html");
exit();
}else if(mysqli_num_rows($res_R2) > 0){
$regcode_error = "Reg.Code already used by someone, please inform administrator for further information.";
}else{
$regcode_error = "Reg.Code doesn't exists, please inform Administrator for further information.";
}
}
?>
这是发生的事情:我试图让我的系统从数据库中识别出一个名为“ regcode”的代码,因此在验证后用户将能够注册其帐户,如果该regcode,用户将无法注册其帐户在人员数据库中正在使用,或者当regcode数据库中不存在regcode时,问题是: -验证后,我的数据库没有添加新信息。 -我尝试了另一种方式,例如测试regcode无效或正在使用中,并且通过显示错误消息可以很好地发挥作用。
我想像几个小时一样解决这个问题,但仍然无法解决。我是php btw的新手,谢谢您的建议。
答案 0 :(得分:0)
此行不正确
VALUES ('.$username.', '.$password.', '".$regcode."')";
应该是
VALUES ('$username', '$password', '$regcode'";
您在连接时不正确,在您不需要的地方,请记住双引号字符串会自动展开$variables
注意:您的脚本向SQL Injection Attack开放 甚至if you are escaping inputs, its not safe! 在
MYSQLI_
或PDO
API中使用prepared parameterized statements如果您包含一些错误检查代码,这将使您更容易调试自己。添加
ini_set('display_errors', 1);
ini_set('log_errors',1);
error_reporting(E_ALL);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
到脚本顶部。这将迫使任何
mysqli_
错误 生成您可以在浏览器上看到的异常,其他错误也将在浏览器上可见。