2011-06-28 64 views
1

如何解決「Mysql_fetch_array提供的參數不是有效的MYSQL結果」錯誤?提供的Mysql_fetch_array參數不是有效的MYSQL結果

這是有錯誤的代碼:

<?php 
    require "connect.php"; 
    $query = mysql_query("SELECT author, date 
          FROM articles 
          WHERE id = ' . $id . '") or die(mysql_error()); 
    $runrows = mysql_fetch_array('$query'); 

    $author = $runrows['author']; 
    $date = $runrows['date'];   
?> 
+0

看起來像一個SQL注入點:)(只是一個猜測,完全脫離主題,只是想警告你:)) – PeeHaa

+0

ooo我聽說過很多關於這一點。我該如何解決這個問題? –

+0

您可能想查看[SQL注入](http://en.wikipedia.org/wiki/SQL_injection)和[PHP中要遵循的安全措施](http://php.net/manual/en/security .database.sql-injection.php) – Balanivash

回答

3
$query = mysql_query("SELECT author, date FROM articles WHERE id = ' . $id . '") or die(mysql_error()); 
    $runrows = mysql_fetch_array($query); 

應該沒有報價$query。它是一個變量,而不是一個字符串。

+0

+1正確的,實際上'$查詢'是一個資源,因此它是沒有意義的,使它成爲一個表達的一部分或插值。 –

1
$runrows = mysql_fetch_array('$query'); 

應該

$runrows = mysql_fetch_array($query); 

$runrows = mysql_fetch_array("$query"); 

使用'$variable'剛剛打印出$variable爲te XT。你想使用變量的值。

SQL注入是當您使用該用戶交互的$id變量時。

E.g.您有以下網址:

http://example.com/articles.php?id=1

如果你只是id變量添加到您的查詢的人可以在變量注入代碼。

http://en.wikipedia.org/wiki/SQL_injection

爲了防止這種情況,你可以簡單地做: 的$ id = mysql_real_escape_string($ ID);

或者如果支持,則使用預處理語句。

http://en.wikipedia.org/wiki/Prepared_statements#Parameterized_statements

0

取出點和使用這樣的事情在第三行

$query = mysql_query("SELECT author, date FROM articles WHERE id = '$id'") or die(mysql_error()); 
0

這發生在我身上時,我還沒有關閉使用mysql_close($康恩)的連接。我猜從數據庫之間的套接字仍然是打開的,下一次當我再次連接到相同的數據庫,這個特殊的錯誤來了。沒有其他問題。一旦我明確關閉連接,然後再次重新啓動連接,則此問題已解決。希望能幫助到你。

相關問題