2008-10-31 85 views
0

我想下面的代碼:不是一個有效的MySQL資源

<?php 

    $link = mysql_connect('localhost', 'root', 'geheim'); 
    if (!$link) { 
     die('Could not connect: ' . mysql_error()); 
    } 
    echo 'Connected successfully'; 



    $query = "SELECT * FROM Auctions"; 
    $result = mysql_query($query); 

    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    { 
     foreach($row as $field=>$value) 
     { 
      echo "$field: {$value} <br />"; 
     } 
    } 
    mysql_close($link); 

?> 

而得到這個錯誤:

Warning: mysql_fetch_array(): supplied argument is not a 
    valid MySQL result resource in 
    C:\Programme\EasyPHP 2.0b1\www\test.php on line 14 

我缺少什麼?

+0

可能重複的[警告:mysql_fetch_ *期望參數1是資源,布爾給定錯誤](http://stackoverflow.com/questions/11674312/ warning-mysql-fetch-expect-parameter-1-to-resource-boolean-given-error) – 2012-07-31 02:17:21

回答

9

您沒有選擇數據庫MySQL的任何錯誤 - 使用mysql_select_db()

這將是這樣的:

<?php 
    $link = mysql_connect('localhost', 'root', 'geheim'); 
    if (!$link) { 
     die('Could not connect: ' . mysql_error()); 
    } 
    echo 'Connected successfully'; 

    $db_selected = mysql_select_db('foo', $link); 
    if (!$db_selected) { 
     die ('Error selecting database: '. mysql_error()); 
    } 
    echo 'Using database successfully'; 

    $query = "SELECT * FROM Auctions"; 
    $result = mysql_query($query); 
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
     foreach($row as $field=>$value) { 
      echo "$field: {$value} <br />"; 
     } 
    } 
    mysql_close($link); 
?> 
0

你是否得到任何回報?如果沒有找到結果,mysql_query返回FALSE。

檢查運行fetch_array之前。

+0

如果沒有找到結果,它仍然返回一個資源,但是沒有結果。 `mysql_query()`只在返回錯誤時返回false。 – 2008-10-31 13:25:22

1

$ query =「SELECT * FROM Auctions」;

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

所以你會看到錯誤

2

你的MySQL查詢可能不匹配數據庫中的任何行。

檢查返回值mysql_query(),它返回成功時的「資源」和失敗時返回「假」。

$query = "SELECT * FROM Auctions"; 
$result = mysql_query($query); 

if ($result !== false) { 
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
     foreach ($row as $field=>$value) { 
      echo $field . ':' . $value 
     } 
    } 
} else { 
    // query returned 0 rows 
} 

正如其他人還建議,可以使用mysql_error()看,如果該查詢返回

+0

mysql_query只對實際錯誤返回false。空的結果集不是錯誤。 – KernelM 2008-10-31 13:11:03

相關問題