作者strife00 (strifecloud)
看板PHP
標題[請益] 關於PhP與MySQL
時間Wed Apr 2 23:34:36 2014
小弟我是PHP與MySQL的新手,
有個小問題想請益,程式碼如下(取片段)
<form name="search" action="result.php" method="post">
<h1><p align="center"><b>Please Enter Keywords </b></p></h1>
<p align="center"><b>請輸入關鍵字</b></p>
<input name="input" type="text" width="1000" /><br>
<input name="area" type="checkbox" value="台北">台北<br>
<input name="type" type="hidden" value="xxxx" /><!-- 隱藏數值 -->
<input name="ok" type="submit" value="檢索" /><input name="retype" type="reset" value="重設" />
</form>
我寫了一個簡單的Form,包含了text和checkbox如上
$sql_query =" SELECT * FROM vocabulary WHERE
cChinese LIKE '%".$_POST["area"]."%'
OR cChinese LIKE '%".$_POST["input"]."%'
OR cEnglish LIKE '%".$_POST["input"]."%'
OR cJapanese LIKE '%".$_POST["input"]."%'" ;
在吐值的語法如上,主要是用Like '% %' 的方式,在text中輸入關鍵字
來搜尋某些關鍵字的字串結果。
但用Like '% %'的方式,只要都不輸入任何東西,它就會將所有的資料庫的內容吐出來,
這會跟我checkbox想找的東西衝突。
比如我text不想輸入東西,只想用checkbox找特定的資料庫內容,
但是由於text中沒有輸入東西,因此它會自動將資料庫所有內容吐出來
就失去了我想找特定內容的意義了。
不知道有沒有什麼方法解決?
或是有沒有辦法解決用LIKE '% %'語法不輸入東西它就會吐出所有的值?
說明有點複雜,請大家多多包涵
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 43.244.28.73
※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1396452878.A.DDB.html
→ danny8376:事先檢查值是不是空的啊 04/02 23:45
→ danny8376:遇到空的就那段OR不加進去不就行了 04/02 23:46
→ danny8376:然後你的寫法... 注意下SQL Injection 04/02 23:46
→ cf1064:判斷不是空的,sql字串相加 04/03 00:12
→ terrybob:isset($_POST['area'])?$_POST['area']:''; 04/03 01:51
→ strife00:請問在判斷是空的就不執行的語法是isset對嗎?因為是新 04/03 11:07
→ strife00:是新手不太知道具體的語法怎麼寫,感謝 04/03 12:37
→ alog:LIKE 的 %% 運算就算你不給 空白 用 % 也是可行 04/04 19:31
→ alog:另外_ 也行 04/04 19:32
→ alog:另外字串為空這件事情 請使用 mb_strlen or strlen 04/04 19:34
→ alog:empty 只要填 '0' 進去一樣算 true 04/04 19:35
→ strife00:解決了!感謝各位大大 04/06 23:41