2010-03-18 61 views
0

我創建了一個代碼來查看數據。數據不能在表單顯示...爲什麼數據無法在表單中顯示?

代碼:表單

<?php //======================================================================================================================= PROCESS DATA ======================================================= START. 
include "connectioncomplaint.php"; 
?> 

<?php 
$subject = $_GET['type']; 
$comment = $_GET['id']; 

//echo 'test : ' . $name; 
//Tarik data dari sini 
$queryDetail = " SELECT * FROM campuscomplaint " . " WHERE subject = '" . $subject . "' AND comment = '" . $comment . "' "; 
//echo 'QUERY DETAIL :' . $queryDetail . '<br>' ; 

$resultDetail = mysql_query($queryDetail); 
//echo 'RESULT DETAIL :' . $resultDetail + 0 . '<br>' ; 

$detail = mysql_fetch_array($resultDetail); 

//echo $detail . '<br>'; 
//echo 'detail subject is : ' . $detail['subject'] . '<br>'; 
//echo 'detail comment is : ' . $detail['comment'] . '<br>'; 
//echo $detail[$x] . '<br>'; 

?> 

代碼:

<tr> 
        <td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5">From:</td> 
        <td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><input type="text" name="to" 
size="40" maxlength="80" value="<?php echo $detail['userid']; ?>"/></td> 
       </tr> 
       <tr> 
        <td width="38%" bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5">Subject:</td> 
        <td width="62%" bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><input type="text" name="subject" size="40" maxlength="80" value="<?php echo $detail['subject']; ?>"/></td> 
       </tr> 
       <tr> 
        <td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5">Comment:</td> 
        <td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><textarea name="comment" rows="5" cols="40"><?php echo $detail['message']; ?></textarea></td> 
       </tr> 
       <tr> 
        <td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><p>&nbsp;</p> 
         <p>&nbsp;</p></td> 
        <td bordercolor="#FFFFFF" bgcolor="#FFFFFF" class="register style5"><input type="submit" name="submit" value="Submit Comment" onClick="return OnButton1();"/></td> 
       </tr> 
+0

也許這只是在發佈,但你也有一個錯字,你命名變量'$ resulDetail',然後傳入'$ resultDetail'(注意丟失的't '在第一種情況) – 2010-03-18 21:12:22

+0

謝謝...但仍然錯誤.. – shimaTun 2010-03-18 21:20:54

+1

你好鮑比表(http://bobby-tables.com/) – Quentin 2010-03-18 21:28:41

回答

0

更改這個來做:

$resulDetail = mysql_query($queryDetail); 

$resulDetail = mysql_query($queryDetail) or die(mysql_error()); 

併發布你得到的錯誤。

+0

錯誤仍然相同..... 警告:mysql_fetch_array():提供的參數不是在C:\ Program Files \ xampp \ htdocs \ e-Complaint(FYP)\ userView.php上的有效MySQL結果資源行101 – shimaTun 2010-03-18 21:15:07

+0

您的sql查詢有誤,請打印它 – Pentium10 2010-03-18 21:34:33

0

考慮您的代碼:

$resulDetail = mysql_query($queryDetail); 
$detail = mysql_fetch_array($resultDetail); 

這種錯誤可能是當mysql_query沒有發生 - 並返回false;這意味着$resultDetail不是資源,不能用作mysql_fetch_array的參數。


這意味着你打電話mysql_fetch_array前應該測試是否$resultDetail是不假:

$resulDetail = mysql_query($queryDetail); 
if ($resulDetail === false) { 
    // while developping, you can echo the error message 
    // in production, you should log it to a file 
    echo mysql_error(); 
} else { 
    // query has been run OK 
    // => You can use the result : 
    $detail = mysql_fetch_array($resultDetail); 
    // ... 
} 


哼:看你的代碼越近,你有這樣的:

$resulDetail = mysql_query($queryDetail); 
$detail = mysql_fetch_array($resultDetail); 

在第一行,mysql_query的結果存儲到$resulDetail,沒有t
而且,在第二行中,您使用的是$resultDetail,與t

即用於mysql_fetch_array的變量不存在 - 因此被認爲是null - 不是有效的資源。


一點題外話,即使這不是在這種特定的情況下,問題的原因,但你正在構建您的查詢是這樣的:

$subject = $_GET['type']; 
$comment = $_GET['id']; 
$queryDetail = " SELECT * FROM campuscomplaint " . " WHERE subject = '" . $subject . "' AND comment = '" . $comment . "' "; 

這意味着你是不是之前逃脫數據將其注入SQL查詢 - 這是壞的,並可能導致SQL injections

你應該對這些字符串使用mysql_real_escape_string,他們注入SQL闕之前(在執行查詢這可能會導致錯誤) ry:

$subject = mysql_real_escape_string($_GET['type']); 
$comment = mysql_real_escape_string($_GET['id']); 
$queryDetail = " SELECT * FROM campuscomplaint " . " WHERE subject = '" . $subject . "' AND comment = '" . $comment . "' "; 
+0

我不明白....你可以解釋更多的細節.... – shimaTun 2010-03-18 21:17:33

+0

Heu ...哪一部分你不明白? – 2010-03-18 21:19:43

+0

數據仍然無法顯示.... – shimaTun 2010-03-18 21:35:11

0

您的$ resultDetail不是資源,不能用作mysql_fetch_array()的參數。從我的練習 - 用mysql「sql」測試你的所有查詢!你可以在那裏找到關於錯誤的更詳細的信息!

0

shimaTun,如您在之前的回答中所評論的,「提供的參數不是有效的MySQL結果資源」。這意味着你的查詢是無效的,並且mysql_query()返回一個mysql錯誤資源,而不是RESULT資源。將您的代碼更改爲以下內容:

$resultDetail = mysql_query($queryDetail); 
if (mysql_error()) { 
    die("MySQL error: " . mysql_error()); 
} 

並重新運行該腳本。這將吐出查詢造成的確切錯誤。

順便說一下,你的td標籤中的所有「bordercolor」和「bgcolor」屬性是什麼?你顯然使用CSS,因爲還有「class」屬性。爲什麼不通過樣式表設計表格單元來節省幾千字節的帶寬?它也使得HTML更易於閱讀。

您還需要修復如何生成HTML。假設在你插入到表單中的數據包含雙引號或標籤的情況下:

<textarea name="comment" rows="5" cols="40"><?php echo $detail['message']; ?></textarea> 

如果$detail['message']看起來像「你好,</textarea的>我是你的標籤外,搞亂你的HTML」。生成的HTML看起來像:

<textarea name="comment" rows="5" cols="40">Hello, </textarea> I'm outside your tags, messing with your HTML</textarea> 

現在的comment部分消失,減少到只有Hello,,因爲它是由含<textarea>爆發。除非你的表格數據預先存儲逃脫(通常是一個壞主意),你應該總是通過用htmlspecialchars輸出入的形式()函數,就像這樣:

<textarea><?php echo htmlspecialchars($detail['message']) ?></textarea> 

這將很好地轉化<,>,& ,'和'到他們的字符實體等價物中。

相關問題