PHP使用mysql_fetch_row给出布尔错误

时间:2012-03-13 15:29:09

标签: php mysql boolean

  

可能重复:
  PHP Error: mysql_fetch_array() expects parameter 1 to be resource, boolean given

所以我的错误是什么:

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();

6 个答案:

答案 0 :(得分:4)

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

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

如果你有甚至准确的最小错误处理,你会看到错误:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

您需要在查询中引用您的用户名:

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

就像现在一样,你的sql查询无效。

答案 3 :(得分:1)

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

$result = mysql_query($query);

with:

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

答案 4 :(得分:1)

我认为查询不正常,因此出现错误并且mysql_query返回false,这就是为什么你有一个布尔值

答案 5 :(得分:1)

阅读您的错误:

  

mysql_fetch_row()期望参数1为资源,布尔值为

所以这意味着$ result是一个布尔值。当mysql_query出错时会发生这种情况。这反过来又意味着您的SQL错误。

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

应该更好。