我正在尝试检查数据库,以确保在注册过程中不存在用户名。我从数据库获取计数。
PHP代码:
if($result=mysql_query("SELECT count(*) from users where username='$requsername'"))
{
while($row=mysql_fetch_array($result))
{
$usercount=$row[0];
echo $usercount;
}
}
else
{
$goof=mysql_error();
$error = "<b>Error:</b> $goof";
echo $error;
}
jQuery代码:
$('#newusername').blur(function() {
var requsername=$('#newusername').val(),
dataString='requsername=' + requsername;
$.ajax({
url:'scripts/checkusername.php',
data: dataString,
type:'POST',
success: function(data) {
var response=data;
if(response==="0") {
$('#usernamestat').html('Username Available');
$('#addusrbtn').removeAttr('disabled');
alert(response);
}
}
}
}
但它忽略了数据的价值。我做了一个警报,它正在警告来自数据库的号码,但它没有运行代码来启用我的按钮并说出可用的用户名。我不知道我做错了什么!我希望它传递或失败 - 如果它通过(没有用户发现请求的用户名)它启用提交按钮并让它们继续;但如果它没有通过并且有如果值大于0,则会显示一条错误消息,表明用户名已被占用。根本无法正常工作或根本无法识别数字!
答案 0 :(得分:1)
您是否确定是否进行了ajax通话?从我记得你没有提供数据到jquery ajax函数的形式key = value但形式为{key:value}
当你无法猜出你做错了什么时,做一些调试:
console.log(data)
vardump
放入php代码中。 这么多方法......
我每天3小时使用Php风暴调试器,Dev工具另外3:)
答案 1 :(得分:1)
1)
//Hope this might help
//check wether control goes to else part
success: function(data) {
var response=data;
if(response==="0") {
$('#usernamestat').html('Username Available');
$('#addusrbtn').removeAttr('disabled');
alert(response);
}else{
alert("Username not available");
}
//if it goes to else part then change your if condition to
if(response === 0) {//return from php might be of integer operator(===) needs value along with type to be same
-----
-----
}
OR
if(response == "0")
答案 2 :(得分:0)
使用mysql_num_rows代替 while循环。 它会给你行数。 然后你检查
$num_rows = mysql_num_rows($result);
if($num_rows > 0)
{
echo 'usename already exist.';
}