2012-03-13 34 views
-4

Possible Duplicate:
PHP Error: mysql_fetch_array() expects parameter 1 to be resource, boolean givenPHP给布尔误差和mysql_fetch_row

因此,继承人什么我的错误是:

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /home/content/12/8781812/html/internal/domain/property/process.php on line 17 

的代码是:

function checkTOS($username){ 
    include("includes/opendb.php"); 

    $user2check = mysql_real_escape_string($_POST['username']); 
    $query = "SELECT * FROM user WHERE username=".$user2check; 
    $result = mysql_query($query); 
    while($row = mysql_fetch_row($result)){ 
     $TOS = $row[11]; 
     } 
if($TOS == 1){ 
     return true; 
    }else{ 
     return false; 
    } 

} 

第17行是:

while($row = mysql_fetch_row($result)){ 

这是基本的检查用户是否接受主用户数据库中的服务条款。

编辑:

所以我固定的,但现在我什么也没得到,当我尝试打印我的行...继承人的新代码。

function checkTOS($preusergrab){ 
    include("includes/opendb.php"); 

    $query = "SELECT * FROM users WHERE username='".$preusergrab."'"; 
    $result = mysql_query($query) or die(mysql_error()); 

    while($row = mysql_fetch_row($result)){ 
     $TOS = $row[11]; 
     } 

     // echo $query; 
     print_r($row); 
     die(); 
+0

您必须将值用单引号包含在查询中。即'$查询=“选择*从用户WHERE用户名='”。$ user2check。“'”;' – 2012-03-13 15:31:31

+0

@Rook有什么问题呢? – 2012-03-13 15:35:18

+0

你应该考虑使用列名而不是索引'$ TOS = $ row [11]'。未来的程序员可能会添加一列并破坏您的代码。 – 2012-03-13 15:36:19

回答

1

您的查询失败。这就是为什么它是一个布尔值。

$result = mysql_query($query); 
if ($result === FALSE) { 
    die("My query failed : " . mysql_error()); 
} 
+1

不要输出错误消息的固定字符串。找出问题是完全没有用的。总是在开发/调试时输出真正的错误消息:'...或死(mysql_error())'。 – 2012-03-13 15:32:42

1

你需要引用您的用户名查询:

$query = "SELECT * FROM user WHERE username='".$user2check."'"; 

因为它是现在,你有一个无效的SQL查询。

4

您已经在查询字符串中忘记了您$用户名中的引号,导致用户名被视为不存在的字段名。查询失败,返回一个布尔值false,然后您盲目地尝试在fetch调用中使用它,从而触发错误。

$query = "SELECT * FROM user WHERE username='".$user2check . "'"; 
              ^--   ^^^^^^---missing 

如果你有连准系统最小的错误处理,你会看到错误:

$result = mysql_query($query) or die(mysql_error()); 
1

如果查询不成功mysql_query返回布尔...更换

$result = mysql_query($query); 

附:

$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
1

我认为查询是没有确定,所以出现了一个错误,请求mysql_query返回假的,这就是为什么你有一个布尔

1

看了你的错误:

mysql_fetch_row() expects parameter 1 to be resource, boolean given

因此,这意味着$结果是布尔值。当mysql_query出错时会发生这种情况。这又意味着你的SQL是错误的。

"SELECT * FROM user WHERE username='".$user2check."'"; 

应该更好地工作。