New Ribbon
用Canva設計超快超質感(第2版):商業設計、簡報、影片、網頁、電子書與AI應用最速技 AI繪圖工具 × AI視覺設計平台,從圖像生成到專業設計! 最強職場助攻!ChatGPT + AI 高效工作術 短影音制霸:打造TikTok、YT Shorts、IG Reels成功方程式與AI高效創作力 Canva+AI創意設計與品牌應用250招:從商業技巧、社群祕技到AI圖文影音特效 快快樂樂學威力導演2024.影音剪輯與AI精彩創作 Power Automate自動化超效率工作術 Midjourney AI圖像魔導書:搭配ChatGPT魔法加倍 超人氣FB+IG+LINE社群經營與行銷力(第二版) 翻倍效率工作術:不會就太可惜的 Excel × ChatGPT 自動化應用 AppInventor2零基礎入門班中文版(第六版) Python零基礎入門班(第四版) C語言學習聖經 用Canva設計超快超質感:平面、網頁、電子書、簡報、影片製作與AI繪圖最速技 PHP8/MySQL網頁程式設計自學聖經 翻倍效率工作術 - 不會就太可惜的Power BI大數據視覺圖表設計與分析(第三版) 社群經營一定要會的影音剪輯與動畫製作術 Notion高效管理250招:筆記×資料庫×團隊協作,數位生活與工作最佳幫手 Office 2021高效實用範例必修16課(附500分鐘影音教學/範例檔) Excel自學聖經(第二版):從完整入門到職場活用的技巧與實例大全

 

  挑戰PHP5/MySQL

Clare

Clare
更新時間:2012/10/15 下午 01:39:54

 

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() 測試變數的用意是什麼?安全性考量?確認變數未被覆寫?

文淵閣工作室

文淵閣工作室
更新時間:2012/10/22 上午 08:45:51

 

1.因為是由表單送的資料,所以一定有值,這個狀況為空字串。
2.不會有很「大」的影響。
3.基於安全性考量,怕有心人用SQL注入進行意想不到的破壞,所以我們通常都會檢查是否有這個變數,而這個變數一定要是某個值。一般在檢查時,都只會查詢這個變數,而不檢查值,那很容易被破解。但如果只有檢查變數的值為多少,在一些較嚴謹的環境下,如果沒有該值時也會報錯,所以才會寫二層的檢查。




 

 

Re:挑戰PHP5/MySQL

請輸入姓名。

已超出字元數目的最大值。


請輸入電子郵件。

格式無效。


請輸入內容。