最近在撰寫PHP程式的時候遇到了兩個花費我不少時間的問題.
第一個問題:
我們常常在設計表單的時候都會設計 新增, 刪除, 編輯的功能, 在完成這些功能之後, 我們習慣用 header(“Location: xx.php”); 回到瀏覽列表. 但有時候我們在編輯成功回到瀏覽列表後(沒有錯誤訊息), 但資料卻沒有被編輯修改成功. 最糟糕的是MYSQL_ERROR() 也帶不出到底問題出在哪裡. 這個時候就可以推斷是ID 沒有被送入MYSQL.
比如說: mysql_query(“UPDATE products SET title = ‘$title’ WHERE id = ‘$id’”) or die(mysql_error());
這個時候, 如果你的$id 變數值是 “” 也一樣會通過指令, MYSQL 不會告訴你有錯誤. 所以無論你怎麼試都還是發現指令明明就沒問題但怎樣就是沒辦法UPDATE成功.
第二個問題:
還有另一個可能性是出在一個天殺的錯誤:
<input type=”hidden” name=”id” values=”<?php echo $_GET[‘id’]; ?>” />
當我們想要用隱藏表單傳送ID值的時候, 會用以上的HTML來傳送, 你發現問題出在哪裡嗎?
答案很明顯, 就是 “values” ! values 是沒有 “s”的, 多了一個”s” 你的表單就送不出去ID這個值了.
正解: <input type=”hidden” name=”id” value=”<?php echo $_GET[‘id’]; ?>” />
若這個問題剛好與以上的問題碰在一起, 肯定會在DEBUG上花很時間.
表面上看起來很簡單的問題, 有時候會搞到我們抓狂都找不到BUG. 在這裡與大家分享經驗.
發佈留言