所以我创建了一个函数来检查用户输入的数据是否已经在我的用户数据库中。该函数在测试环境中运行(但在页面打开时运行)。由于某种原因,它会将用户输入分配给 $username 函数,而不管查询的结果如何。我想我可能必须 AJAX 它,但我不知道如何。
<?php
function checkIfEntered($data, $conn)
{
$query = "SELECT * FROM users
WHERE username= '" . $data . "'";
if ($result = mysqli_query($conn, $query)) {
/* determine number of rows result set */
$row_cnt = mysqli_num_rows($result);
/* close result set */
mysqli_free_result($result);
}
if (($row_cnt) >= 1)
{
return TRUE;
}
if (($row_cnt) == 0)
{
return FALSE;
}
}
error_reporting(E_ALL);
ini_set('display_errors',1);
// define variables and set to empty values
$servername = "localhost"; $username = "root";
$password = "root";
$dbname = "MyDatabase";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$email = '';
$emailErr = '';
$usernameErr = '';
$UserPasswordErr = '';
$username = '';
$UserPassword = '';
$confirm = '';
$confirmErr = '';
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["username"]))
{
$usernameErr = "username is required";
}
else
{
if (checkIfEntered($username, $conn))
{
$usernameErr = "There is already a user with the username: " . $username;
}
else
{
$username = test_input($_POST["username"]);
}
}
最佳答案
您甚至没有调用“checkIfEntered”函数。相反,您正在调用“isEnteredUsername”函数,我在这里没有看到它。所以代码总是进入 else 并将 POST 值分配给 $username。 我不知道为什么你认为 AJAXing 可以解决问题,但你可以在文档准备好或像 $.ajax({ ... }) 这样的事件上使用 AJAX 调用,如此处所述。 http://api.jquery.com/jquery.ajax/
关于PHP 查询无法检查数据库中的用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37517417/