我正在处理一个非常原始的代码问题。 代码目的是在未使用电子邮件和用户名的情况下将用户插入数据库。否则,显示发生的错误。 问题:如果我输入已经存在的电子邮件或用户名,我可以看到正确的错误,但只有当检查的数据位于表格的第一行时才会看到。
奇怪的是?确实,如果检查发生的是另一行不是第一行,我就看不到错误,但是用户也不会插入数据库中,这很好。
这是我的代码:
if(isset($_POST['r-r-email']) && isset($_POST['r-r-username']) && isset($_POST['r-r-password'])) {
$r_email = $_POST['r-r-email'];
$r_username = $_POST['r-r-username'];
$r_password = $_POST['r-r-password'];
// Interact
$check = 'select * from table_name';
if($stmt = $database->run_query($check)) {
$row = $stmt->fetch_assoc();
// Check if e-mail exists
if($row['user_mail'] == $r_email) {
print 'E-mail exists.';
} else if($row['user_name'] == $r_username) {
// Check if username exists
print 'Username exists.';
} else if(preg_match('/\s/', $r_username)) {
// Detect spaces
print 'Spaces detected.';
} else {
// Proceed
$insert = 'insert into table_name (user_name, user_password, user_mail) values ("'.$r_username.'", "'.$r_password.'", "'.$r_email.'")';
$database->run_query($insert);
$email = '';
$username = '';
$password = '';
print 'User inserted.';
}
$stmt->close();
}
}
这是粗鲁的数据库类:
class database {
private $connection;
public function __construct() {
self::connect('localhost', 'root', '', 'database');
}
private function connect($host, $dir, $psw, $db) {
$this->connection = mysqli_connect($host, $dir, $psw, $db);
}
public function run_query($query) {
return $this->connection->query($query);
}
public function disconnect() {
mysqli_close($this->connection);
}
}
提交发生在同一页面,正如您所期望的那样。 谢谢你们! 费德里科