PHP js 用户名实时检查


php js username live check

我正在开发我的网站应用程序,以提供生活反馈,无论用户名是否可用或被占用。我走到了死胡同,我想知道我是否可以得到一些帮助。这是我的js代码:

$('#username').keyup(function() {

 var username = $(this).val();
$('#username_status').text('Searching...');
if (username !='') {
    $.post('username_check.php', { username: username}, function(data) {
        $('#username_status').text(data);
    });
} else{
    $('#username_status').text('');
}});

这是我的PHP代码:

<?php require_once("../includes/session.php"); ?>
<?php require_once("../includes/db_connection.php"); ?>
<?php require_once("../includes/functions.php"); ?>
<?php
  if (isset($_POST['username'])) {
  $username = mysqli_real_escape_string($_POST['username']);
  if (!empty($username)){
    $username_query = mysqli_query($con"SELECT COUNT('id') FROM 'attendant' WHERE 'username'='$username'");
    $username_result = mysqli_result($username_query, 0);
    if ($username_result == 0) {
      echo 'Username availabe!';
    } else if ($username_result == 1){
      echo 'sorry, that username is taken.';
    }
  }
}
 ?>

正如我之前在评论中已经概述的那样,您的代码存在一些问题,因此如果您没有看到它,我决定在这方面发布一个答案。很多时候,评论是看不见的,和/或被误解的。

  • $con "SELECT 之间缺少逗号 mysqli_query($con"SELECT 应改为mysqli_query($con,"SELECT
  • mysqli_real_escape_string() 需要将数据库连接作为第一个参数传递。

应改为:

$username = mysqli_real_escape_string($con, $_POST['username']);
  • 对表和列使用错误的标识符,即引号'

在:

SELECT COUNT('id') FROM 'attendant' WHERE 'username'
             ^  ^       ^         ^       ^        ^

删除引号:

SELECT COUNT(id) FROM attendant WHERE username

或用反引号替换它们:

SELECT COUNT(`id`) FROM `attendant` WHERE `username`

调试/故障排除:

编写代码时,将or die(mysqli_error($con))添加到mysqli_query()
并使用错误报告

旁注:错误报告只应在暂存中完成,而不应在生产环境中完成。


一个见解:

  • 确保表单的元素与变量相对应。

  • 另外,请确保您的数据库连接mysqli_,而不是mysql_或 PDO。很多时候,人们将这些不同的 API 混合在一起;它们不混合。我这样说是因为我不知道你用哪个 API 连接;您的代码/问题中没有指示。


特别提示:

  • 您应该考虑将mysqli与预处理语句一起使用,或者将 PDO 与预处理语句一起使用,它们更安全