Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查用户名可用性时遇到问题_Php_Jquery_Html - Fatal编程技术网

Php 检查用户名可用性时遇到问题

Php 检查用户名可用性时遇到问题,php,jquery,html,Php,Jquery,Html,我这里有一个检查用户名是否可用的代码,但我收到一条错误消息,说明: <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 /> $usern

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

 <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
我的jquery是这样的:

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( '#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而不是$,因为我在documentready之前在顶部指定了一个jQuery无冲突代码。

通常这条消息

mysql_result() expects parameter 1 to be resource
表示查询出现语法错误并已失败。这与返回0行的成功查询不同。看看你的查询,你有很多单引号。那可能是你的问题。我添加了连接,因为它提高了可读性

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

就我个人而言,我会做以下工作:

// 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是异步的。

mysql_*函数从PHP 5.5.0开始就被弃用了。使用PDO或mysqli_*代替!就个人而言,我建议使用PDO:我现在要阅读链接,因为您的mysql_查询调用很可能返回false failing,因此会出现错误。当你使用mysql时,你可能很难从别人那里得到合适的回复。如果你把你的错误放在谷歌上,你会发现很多,事实上不是很明显,或者你会找到一个答案。mysqli_查询确实需要传递连接,但旧函数不需要使用最后一个连接。尽管如此,使用mysqli还是更好,但我在OP的上下文中回答了这个问题
$('#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