《Disney +》 迪士尼、Marvel、彼思、星球大戰…  日本最大規模線下VALORANT活動!OSAKA VALORANT FES大阪現場報告!   《Destruction AllStars》新遊戲模式登場   「尼爾:人工生命 ver.1.22474487139…」上市紀念活動「#尋找埃米爾」!埃米爾卡車將在全日本巡迴!   夏天!海灘!任天堂明星大亂鬥SP 線上挑戰第3戰即將登場!   《Final Fantasy VII Remake Intergrade》:7大提示和訣竅教你得心應手扮演尤菲‧如月   《Godfall》現已登陸PS4,同時推出全新「Fire & Darkness」擴充內容   「魔物獵人崛起:破曉」先行預告影像2公開!新魔物&新角色登場!   《Destruction AllStars》全新的照相模式讓你捕捉並分享所有痛快的破壞場面 

MySQL 使用 Like 語法 與 使用者操作 的 注意事項

商業
logo-mysql1 這篇文章的標題真的蠻難想的, 主要是解決關於使用者操作, 與程式懶得處理的蠢問題.

問題

問題發生是這樣, 有一個欄位 Title, 在前端看到 Title 資訊, 要進後端修改, 在後端做 Search 找那筆資料, 下面是使用狀況:
  1. 使用者輸入的資料是 "今天天氣真好", 那 MySQL Search 條件是用 'LIKE "%今天天氣真好%"' - 正確找到資料.
  2. 使用者輸入的資料是 "今天天氣真好 溫度20度", 那 MySQL Search 條件是用 'LIKE "%今天天氣真好 溫度20度%"' - 正確找到資料.
  3. 使用者輸入的資料是 "今天天氣真好  溫度20度"(真好 和 溫度 中間有兩個空白), 那 MySQL Search 條件是用 'LIKE "%今天天氣真好 溫度20度%"' - 找不到資料.
前面兩個都是正常狀況, 最後面那個例外狀況, 發生的原因是因為輸入的資料多一個空白, 但是在 HTML 裡面, "多個空白" 顯示出來都會是 "一個空白", 使用者在搜尋時, 會習慣把 Title 那個字串複製後, 整個丟進去搜尋, 自然就會找不到那筆資料(因為少一個空白).

解法

  • 通常搜尋部份遇到空白該分割, 然後做 OR 的搜尋, 不過有時後因某些因素, 所以沒這樣子做, 可以先考慮用下面的解法.
  • 於資料寫入前, 把 Title 的多個空白, 全部取代成一個空白, ex: $title = preg_replace('/ +/', ' ', $title);
Source

隨機商業新聞

Disney Plus