Mysql动态数据多条件查询
生活随笔
收集整理的這篇文章主要介紹了
Mysql动态数据多条件查询
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Mysql動態(tài)數(shù)據(jù)多條件查詢
前言
有的時候,我們進行數(shù)據(jù)的數(shù)據(jù)查詢的時候,我們會加入篩選條件。
例如:
select * from user where username = ? // ? 指的是自己輸入的過濾條件但是有的時候,我們又不想查詢這個username的關(guān)鍵詞。
select * from user # 只想上面語句效果怎么辦呢?
原理解析
# 首先我們知道下面兩條語句的效果是一樣的。 select * from userselect * from user where username = username# username = username, 肯定為true # 即 select * from user 和 select * from user where username = username 等價那么我們添加一個IF語句,就可以實現(xiàn)我們的需求了。
select * from user where username = IF(?='',username,?) # ? 將會被替換成您輸入的查詢關(guān)鍵詞實踐
這里使用PHP來進行演示。
function select_user_better($username, $email) {global $mysqli;// 動態(tài)多條件符合查詢$result = $mysqli->query("SELECT * FROM user WHERE username=IF('$username'='',username,'$username')AND email=IF('$email'='',email,'$email');") or die($mysqli->errno);while ($row = $result->fetch_assoc()) {pre_r($row);}}調(diào)用函數(shù)
select_user_better("","");由于我們輸入$username和$email 為 空。
所以sql語句運行后,等價于下面的形式
SELECT * FROM user WHERE username=usename AND email=email自然查詢出了全部的數(shù)據(jù)。
運行效果如下:
當然我們可以根據(jù)用戶名查詢。
調(diào)用函數(shù)
select_user_better("admin","");運行效果:
運用實例
/*** 用戶查詢* @tips: 支持通過$id, $title, $category, $meta來動態(tài)多條件查詢* @param $id* @param $title* @param $category* @param $meta*/ function article_select($id, $title, $category, $meta) {global $mysqli;$result = $mysqli->query("SELECTid,create_time,edit_time,title,content,author,category,meta,main_pic FROMarticle WHEREid=IF('$id'='',id,'$id') ANDtitle like IF('$title'='',title,'%$title%') ANDcategory=IF('$category'='',category,'$category') ANDmeta like IF('$meta'='',meta,'%$meta%')") or die($mysqli->error);$arr = array();while ($row = $result->fetch_assoc()) {array_push($arr, $row);}return $arr; }總結(jié)
以上是生活随笔為你收集整理的Mysql动态数据多条件查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【小坑】Android 实现对话框会报错
- 下一篇: 【最简单的例子】Editor.md的初步