2013-08-18 63 views
0
<?php 
include 'config.php'; 
$tid = $_GET['tid']; 
$sql="SELECT FROM topics where tid='$tid'"; 
$result=mysql_query($sql); 
while($rows=mysql_fetch_array($result)){ 
?> 
<div class="topics"><font size="4"><?php echo $rows['title']; ?></font></div><div class="tdm"><br/><center><img src="http://appricart.com/test/img/<?php echo $rows['photo']; ?>" height="100" width="100"/><br/> 
<small><?php echo $rows['message']; ?></small></div> 
<?php 
} 
include 'foot.php'; 
?> 

有時這段代碼有時候不能幫助我解決這個問題。如何獲取此代碼的輸出。有時顯示輸出,有時它不顯示?

它表明這個錯誤

mysql_fetch_array() expects parameter 1 to be resource 
+1

當有您的查詢時出現錯誤,你還是叫[mysql_fetch_array(http://php.net/manual/en/function .mysql-fetch-array.php)與'$ result',這不是合法的資源。你也應該注意到,mysql擴展已被棄用。你應該使用更現代的,如[Mysqli](http://www.php.net/manual/en/book.mysqli.php)或[PDO Mysql](http://www.php.net/manual /en/ref.pdo-mysql.php) – Itay

+0

我假設你的查詢是複製/粘貼錯誤,即。 'SELECT title,photo,message FROM ...'或'SELECT * FROM ...',而不是'SELECT FROM ...'。此外,您可以直接在查詢中使用'$ _GET'值來開放SQL注入,而無需轉義它。 – Sean

回答

0
<?php 
include 'config.php'; 
$tid = $_GET['tid']; 
$sql="SELECT FROM topics where tid='$tid'"; // here is the error 
$result=mysql_query($sql); 

您並未從表格主題中選擇任何內容。因此它的顯示錯誤..

$sql="SELECT * FROM topics where tid='$tid'"; // this would be better 

更多信息請訪問mysql_fetch_array

1

你沒有做任何錯誤checkings防止這種情況。這個錯誤是在你的mySQL查詢執行失敗時造成的。您有一個mysql_query()語句,並且結果存儲在一個變量中。稍後,您在mysql_fetch_array()聲明中使用該變量。

如果mysql_query失敗,則返回FALSE這是一個布爾值。 mysql_fetch_array預計它是一個資源,而不是。

爲了解決這一問題,並瞭解爲什麼您的查詢失敗,使用mysql_error()功能。

$result = mysql_query($sql); 
if (!$result) { 
    die('Query failed because: ' . mysql_error()); 
} 
else { 
//proceed 
} 

在這種情況下,你是不是從你的數據庫中選擇什麼,肖恩如上所述。

嘗試以下操作:

$sql = "SELECT * FROM topics where tid='$tid'"; 

$sql = "SELECT topics FROM topics where tid='" . $tid . "'"; 

Also, please, don't use mysql_* functions in new code。他們不再維護and are officially deprecated。請參閱red box?請改爲了解prepared statements,並使用PDOMySQLi - this article將幫助您決定哪個。如果您選擇PDO,here is a good tutorial