|
Q1.假設在資料庫的會員資料表中,除姓名為主鍵外,其他欄位(電話、手機、地址、email等)皆可為 NULL。 當網頁表單中欄位未填寫時,寫入資料庫內的資料是空字串"",而非 NULL。 試著以 foreach($_POST as $value) { if ($value == "") $value = null; } 或 foreach($_POST as $value) { if ($value == "") settype($value, "NULL"); } 都無效,仍是寫入空字串。 請問如何才能寫入null?
Q2.有一種說法:"空字串畢竟還是字串,仍會佔用資料庫空間;NULL才不會佔用空間,所以能寫入 NULL 就不要寫入空字串"。 請問這說法正確嗎? 在資料表中存在大量空字串時,與NULL間的效能差異會很大嗎?
Q3.在會員系統範例 member_join 中,
if(isset($_POST["action"])&&($_POST["action"]=="join")){ ... }
如果 $_POST["action"]=="join" 成立的話,不就表示該變數存在了嗎? 為何還要測試變數是否存在?
有試過將 isset($_POST["action"]) 拿掉,仍可正常執行。 自行撰寫其他程式時,不加 isset() 判斷也是可執行,但有些情況卻又非加不可。 想請問用 isset() 測試變數的用意是什麼?安全性考量?確認變數未被覆寫? |