我这里有一个代码,用于检查用户名是否可用,但我收到一条错误消息,说明:
<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" /> 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没有冲突代码。
答案 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" /> 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是异步的。