检查用户名可用性有问题

时间:2013-12-08 23:06:34

标签: php jquery html5

我这里有一个代码,用于检查用户名是否可用,但我收到一条错误消息,说明:

 <br /> <b>Warning</b>: mysql_result() expects parameter 1 to be resource, boolean  given in <b>C:\xampp\htdocs\username_check.php</b> on line <b>8</b><br />     $username_result

我搜索了stackoverflow并发现了一些类似的问题,但没有一个有用。

我的第一个PHP代码是:

<?php

mysql_connect('localhost','username','password');
mysql_select_db('logins');


?>

我的第二个PHP代码是这样的:     

require 'db_connect.php';
if (isset($_POST['username'])) {
$username = mysql_real_escape_string($_POST['username']);
if (!empty($username)) {
  $username_query  = mysql_query ("SELECT COUNT('id') FROM 'users' WHERE   'username'='$username'");
  $username_result = mysql_result($username_query, 0);

  }
}
?>

我的jquery是这样的:

jQuery( '#box1' ).keyup(function(){
var username = jQuery(this).val();

jQuery( '#msg_out1' ).html('<img src="/img/ajax-loader.gif" width="43" height="11" /> &nbsp; Checking availability... ');

 if (username != '') {
 jQuery.post('/click/username_check.php', { username: username }, function(data){
    jQuery( '#msg_out1').text(data);

 });
 }else {
 jQuery( '#msg_out1' ).html('Choose a Username.').css('color','grey').css('font-  size','15px').css('margin-left','40px');
 }
   });
 });

我使用jQuery而不是$因为我在文档准备好之前指定了jQuery没有冲突代码。

2 个答案:

答案 0 :(得分:0)

通常这条消息

mysql_result() expects parameter 1 to be resource

表示您的查询语法错误且失败(这与返回0行的成功查询不同)。查看您的查询,您有很多单引号。那可能是你的问题。试试这个(我添加了连接,因为它提高了可读性)

mysql_query("SELECT COUNT(id) FROM `users` WHERE `username`='" . $username . "'");

答案 1 :(得分:0)

我个人会做以下事情:

// db_connect.php - keep in folder named restricted
// a function makes it easy to create a new instance without using agrs again
<?php
function db(){
  return new mysqli('localhost', 'username', 'password', 'database');
}
?>

// username_check.php - you may keep in folder click
<?php
require 'restricted/db_connect.php'; $db = db();
if(isset($_POST['username'])){
  $username = $db->real_escape_string($_POST['username']);
  if(!empty($username)){
    $username_query  = $db->query("SELECT COUNT('id') FROM users WHERE username='$username'");
    if($username_query->num_rows > 0){
      $r = '';
      while($row = $username_query->fetch_row()){
        $r = $row[0];
      } 
      echo $r;
    }
    else{
      echo '';
    }
    $username_query->free(); $db->close();
  }
}
?>

此外,您的jQuery看起来应该更像:

$('#box1').keyup(function(){
  var username = $(this).val(), msgO = $('#msg_out1');
  msgO.html('<img src="/img/ajax-loader.gif" width="43" height="11" /> &nbsp; Checking availability... ');
  $.post('/click/username_check.php', {username: username}, function(data){
    if(username !== ''){
      msgO.text(data);
    }
    else{
      msgO.html('Choose a Username.').css('color','grey').css('font-  size','15px').css('margin-left','40px');
    }
  });
});
// use `$.noConflict()` if `$` is a problem

你忘记了jQuery是异步的。