2013-02-19 73 views
-2

我试图做一个登录/注册系统,我不断收到错误: 警告:请求mysql_query()预计参数2是资源,在整数给出/home/roscapex/public_html/core/functions/users.php第8行警告:mysql_result()期望参数1是资源,布尔在第6行给出/home/roscapex/public_html/core/functions/users.php

警告:mysql_result()预计至少2个参数,1中给出/home/roscapex/public_html/core/functions/users.php第8行

我的代码是:

<?php 
function user_exists($username) { 

$username = sanitize($username); 

$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'"); 

return (mysql_result(mysql_query($query, 0) == 1) ? true : false); 

} 
?> 

注意这可能是重复的,但我尝试了所有其他相关问题。

+2

请检查右侧的“相关”部分中的任何问题。答案几乎总是一样的。不要在提取或mysql_result()调用中嵌套'mysql_query()'。您必须检查成功或错误。 – 2013-02-19 22:33:11

+0

基本上意味着你不能获取查询,因为它没有返回任何行。在尝试使用'mysql_num_rows'获取它之前进行检查然而 - 我建议查看PDO,mysql_ *已被弃用。 – David 2013-02-19 22:33:24

+0

我知道它的重复我已经尝试过所有其他人,他们都没有为我工作 – 2013-02-19 22:35:33

回答

0

代码中有多处错误。让我注释它:

<?php 
function user_exists($username) { 

$username = sanitize($username); 

$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'"); // $query now contains the result of the query (a Resource) 

// Here you try to run the resource *again* trough mysql_query, with with 2 parameters (which results in the warning). I am not quite sure what you intended. 
return (mysql_result(mysql_query($query, 0) == 1) ? true : false); 

} 
?> 

我修好了。

<?php 
function user_exists($username) { 
    $username = sanitize($username); // This hopefully santizes the username. Better use mysql_real_escape_string($username) 

    $query = "SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'"; 

    $result = mysql_query($query) or die(mysql_error()); // Check if query was successful 
    $row = mysql_fetch_array($result); // fetch the first row 
    return ($row[0] > 1); // If there is one or more users with this name, return true. 

} 
// omit the closing ?>, because it causes trouble, when there are any chars behind it (headers alreay sent error etc.) 
+0

“没有选择数据库”就是现在说的... – 2013-02-22 22:24:18

+0

在调用mysql_query()之前使用'mysql_select_db()'... – iblue 2013-02-23 19:43:52

+0

它仍然表示没有选择数据库 – 2013-02-27 16:33:34

相关问题