2012-03-13 36 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."'"; 

應該更好地工作。