ユーザが入力したデータが既にユーザのデータベースに入っているかどうかをチェックする関数を作成しました。この関数は、テスト環境で動作します(ただし、ページが開いたときに実行されます)。何らかの理由で、クエリの結果に関係なく$ username関数にユーザー入力を割り当てます。私はそれをAJAXにしなければならないかもしれないと思うが、私はどのようにわからない。PHPクエリがデータベースのユーザ名を確認できません
<?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"]);
}
}
これは実際にスタックオーバーフローするコードを転送するときに私が作った間違いでした。私の主な文書で私はこの間違いをしない。私はポストでそれを修正しましたが、それを指摘してくれてありがとう。 –