首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

ThinkPHP 實現 LIKE 模糊查詢完整指南

     編輯:PHP 綜合知識

背景

ThinkPHP 因封裝性佳,導致純 PHP 開發者上手困難。本文以 LIKE 模糊查詢為例詳細說明。

查詢條件寫法

ThinkPHP 支援字串、索引陣列、物件作為查詢條件,推薦使用陣列或物件(較安全)。

一、字串條件(傳統但安全性較低)

$User = M("User");
$User->where('type=1 AND status=1')->select();

生成 SQL:SELECT * FROM think_user WHERE type=1 AND status=1

多欄位查詢預設邏輯為 AND,可用 _logic 修改:

$condition['name']     = 'thinkphp';
$condition['account']  = 'thinkphp';
$condition['_logic']   = 'OR';
$User->where($condition)->select();

生成 SQL:SELECT * FROM think_user WHERE `name`='thinkphp' OR `account`='thinkphp'

二、陣列條件(推薦)

基本 LIKE 查詢

$userForm = M('user');
$where['name'] = array('like', 'jb51%');
$userForm->where($where)->select();

相當於:name LIKE 'jb51%'

多條件 OR 查詢

$where['name'] = array('like', array('%jb51%', '%.com'), 'OR');

相當於:name LIKE '%jb51%' OR name LIKE '%.com'

複雜多條件組合

$where['name'] = array(
    array('like', '%a%'),
    array('like', '%b%'),
    array('like', '%c%'),
    'jb51',
    'or'
);

相當於:(`name` LIKE '%a%') OR (`name` LIKE '%b%') OR (`name` LIKE '%c%') OR (`name` = 'jb51')

使用 _string 直接寫 SQL 片段

$where['_string'] = '(name LIKE "%jb51%") OR (title LIKE "%jb51")';

相當於:name LIKE '%jb51%' OR title LIKE '%jb51'

更多 ThinkPHP 相關內容請查看本站專題:《ThinkPHP 入門教程》、《ThinkPHP 模板操作技巧總結》、《ThinkPHP 常用方法總結》、《Smarty 模板入門基礎教程》及《PHP 模板技術總結》。

希望本文對基於 ThinkPHP 框架的 PHP 程式設計有所幫助。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved