[請益] 關於PhP與MySQL

看板PHP作者 (strifecloud)時間11年前 (2014/04/02 23:34), 編輯推噓0(0014)
留言14則, 6人參與, 最新討論串1/1
小弟我是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

04/02 23:45, , 1F
事先檢查值是不是空的啊
04/02 23:45, 1F

04/02 23:46, , 2F
遇到空的就那段OR不加進去不就行了
04/02 23:46, 2F

04/02 23:46, , 3F
然後你的寫法... 注意下SQL Injection
04/02 23:46, 3F

04/03 00:12, , 4F
判斷不是空的,sql字串相加
04/03 00:12, 4F

04/03 01:51, , 5F
isset($_POST['area'])?$_POST['area']:'';
04/03 01:51, 5F

04/03 11:07, , 6F
請問在判斷是空的就不執行的語法是isset對嗎?因為是新
04/03 11:07, 6F

04/03 12:37, , 7F
是新手不太知道具體的語法怎麼寫,感謝
04/03 12:37, 7F

04/04 19:31, , 10F
LIKE 的 %% 運算就算你不給 空白 用 % 也是可行
04/04 19:31, 10F

04/04 19:32, , 11F
另外_ 也行
04/04 19:32, 11F

04/04 19:34, , 12F
另外字串為空這件事情 請使用 mb_strlen or strlen
04/04 19:34, 12F

04/04 19:35, , 13F
empty 只要填 '0' 進去一樣算 true
04/04 19:35, 13F

04/06 23:41, , 14F
解決了!感謝各位大大
04/06 23:41, 14F
文章代碼(AID): #1JF2uEtR (PHP)
文章代碼(AID): #1JF2uEtR (PHP)