喵喵笨兔 の 喵喵的家~遊戲天地 - 首頁(上版面)
喵喵笨兔 の 喵喵的家~遊戲天地 - 首頁(左版面)
首  頁 最新消息 遊戲攻略 遊戲影片 遊戲圖片 下載區 學習分享 留言板 FB粉絲團
 喵喵笨兔 の 喵喵的家~遊戲天地 - PHP MySQL SELECT..FROM..file LIKE %% OR date LIKE %% 資料和日期型態並存,無法輸入中文搜尋的解決方法

PHP MySQL SELECT..FROM..file LIKE %% OR date LIKE %% 資料和日期型態並存,無法輸入中文搜尋的解決方法

 此為笨兔在摸索寫作過程中遇到的情況及解決方法,給自己參考記錄用的,若有需者就參考!若有錯誤或其它方法,請自行更正唄!

    ※倘若在 MySQL 資料庫內有個 test 資料表,其二個欄位 t_name、t_date(日期類型) 及資料如下:

    t_name t_date
    笨兔 2019-06-20
    小笨兔 NULL
    大笨兔 2019-07-01

 範例:若做個搜尋參數,SQL 設定如下 (笨兔以PDO函數來寫,用Mysql或MySQLi函數亦同)

<?php
  $sql = "SELECT * FROM test WHERE t_name LIKE '%{$_GET['search']}%' OR t_date LIKE '%{$_GET['search']}%'";
  $rs = $conn -> prepare($sql);
$rs -> execute(); ?>
 ※以上 SQL 語法,若有做 $_GET['search'] 參數,則輸入數字或英文來搜尋都沒問題,但若輸入中文字來搜尋,就沒法搜尋囉!這是因為其中有欄位類型是『日期類型』所致吧!  ※改成如下就可解決此問題了!以下為笨兔胡亂摸索出來的,若有錯誤或有更好更正確的方法,請自行更正唄!(笨兔小站中的『遊戲攻略』搜尋就如此寫法唄!^^) <?php $sql = "SELECT * FROM test WHERE t_name LIKE '%{$_GET['search']}%' OR DATE_FORMAT(t_date,'%Y-%m-%d') LIKE '%{$_GET['search']}%'"; $rs = $conn -> prepare($sql);
$rs -> execute(); ?>  ※笨兔是把日期類型的欄位 t_date 用 DATE_FORMAT() 函數抓取出來重新排列成和原來一樣的資料,變成非『日期類型』的資料型態唄!  ※如第一筆 t_date 的日期為 2019-06-20,則為 DATE_FORMAT(2019-06-20,'%Y-%m-%d') 所重新排列後的資料為非『日期類型』的資料 2019-06-20。  ※若您的日期顯示法為 2019/06/20,則 DATE_FORMAT(2019-06-20,'%Y/%m/%d') 即可。  ※若還有顯示時間則自行參閱相關參數,以下為較常用的,有分大小寫哦!其它參數就自行趴文囉!  %Y : 年 (西元4位數)  %m : 月 (00-12)  %d : 日 (00-31)  %H : 時 (00-23)  %h : 時 (01-12)  %i : 分 (00-59)
 %s : 秒 (00-59)
 
笨兔隨手筆記於 2019/7/2

喵喵笨兔 の 喵喵的家~遊戲天地
http://vv0817.tk
http://vvv.lionfree.net
http://qo3op.asuscomm.com/vvv
http://victortu.000webhostapp.com
https://uoedgpkhyfwzmd7zua8myg-on.drv.tw/vvv