2012-05-13 27 views
0

我試圖從數據庫中使用PHP獲得一行,我做了一個HTML表格,應該從用戶採取書籍標題,並從數據庫中獲取關於此的評論本書,然後將它張貼在輸入文本,格式的行動導致了以下功能:從數據庫選擇行使用mysql/php

function GetReview($BookTitle) 
{ 
require'DB.php'; 
if(empty($_POST['BookTitle'])) 
    { 
     echo " You must enter a book name!"; 
     return false; 
    } 

$BookTitle = mysql_real_escape_string($BookTitle); 

$q="Select Reviews from Users_Booklist where (Book_Title like '%" .$BookTitle."%');"; 
if(!mysql_query($q,$con)) 
{ 
die("Error".mysql_error()); 
} 
else 
{ 
$row = mysql_fetch_row($q); 
?> 
<html> 
<head><title>Delete Review </title> 
</head> 
<body> 
<br> 
<form name="DeleteReview " action="DeleteReviewsFunction.php" method="post"> 
Review: <input type="text" name="Review" size="200" value="<?php echo $row[0]; ?>"/>    
<input type="submit" value="Delete Review" /> 
</form> 
</body> 
</html> 
<?php 
} 
} 
GetReview($_POST['BookTitle']) 

但是,它使我的下一個形式沒有在輸入的文本,這樣的警告:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in  C:\AppServ\www\GetReview.php on line 20 

我已經搜索並嘗試了不同的代碼,但仍然是相同的結果。 誰能告訴我哪裏出錯??? ...感謝

+0

的第一個例子http://br2.php.net/manual/en/ function.mysql-fetch-row.php顯示原因 –

+0

您正試圖從您的查詢** STRING **中獲取結果。您需要從mysql_query()調用返回的值中獲取值。 –

+0

請停止使用古老的'mysql_ *'函數編寫新代碼。他們不再被維護,社區已經開始[棄用流程](http://goo.gl/KJveJ)。相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定,[本文](http://goo.gl/3gqF9)將有助於選擇。如果你關心學習,[這裏是一個很好的PDO相關教程](http://goo.gl/vFWnC)。 – vascowhite

回答

3
$qq = mysql_query($q,$con); 
if(!$qq) { 
// (...) 

$row = mysql_fetch_row($qq); 
+0

感謝它工作:) –

0

我不會是一個很大的幫助,但你的問題似乎是個錯誤是發生了,我可以告訴你。

這是在$row = mysql_fetch_row($q);行。

您可以這樣說,因爲錯誤記錄以mysql_fetch_row()開頭,上面的行是代碼中唯一提及的mysql_fetch_row()

0

通過打印$ Q變量與輸出檢查SQL查詢:

回聲$ Q;

現在,嘗試從您的MySQL客戶端執行它。收集結果(如果有的話)並檢查錯誤。

一個建議:如果你願意,你可以像使用ezSQL一個工具,它可以是非常有用的(特別是代碼組織)