我正在处理我的网站应用程序,以提供生命反馈,无论用户名是否可用。我走到了尽头,我想知道我是否能得到一些帮助。这是我的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.';
}
}
}
?>
答案 0 :(得分:1)
您的代码存在一些问题,正如我之前在评论中已经提到的那样,所以我决定在这方面发布一个答案,如果您没有看到它。很多时候,评论是看不见的,和/或被误解的。
$con
和"SELECT
之间缺少逗号
mysqli_query($con"SELECT
应该读作mysqli_query($con,"SELECT
mysqli_real_escape_string()
需要将DB连接作为第一个参数传递。其中应为:
$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()
并使用error reporting。
旁注:错误报告应仅在暂存时完成,而不是生产。
洞察力:
确保您的表单元素与您的变量相对应。
另外,请确保您的数据库连接是mysqli_
而不是mysql_
或PDO。很多时候,人们将这些不同的API混合在一起;他们不混合。我这样说是因为我不知道您使用哪种API进行连接;你的代码/问题中没有任何迹象。
特别说明:
mysqli
with prepared statements或PDO with prepared statements,他们更安全。