Z-Blog主页
Z-Wiki
应用中心
菠萝阁
ZBlogger
Z5加密
跳至内容
Z-Blog Wiki
Z-Blog官方文库
用户工具
登录
站点工具
搜索
工具
显示页面
修订记录
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您在这里:
Z-Blog & Z-BlogPHP
»
Z-BlogPHP
»
应用开发指南
»
各版本增加功能列表
»
1.5增加功能列表
»
链式SQL调用
zblogphp:development:features:1.5:chainquery
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
===== 链式SQL调用 ===== 现在,用全新的链式SQL来查询数据库了!1.6.1后链式查询终于完善了! **本页面的所有内容都是适合1.6.1版本的!** **注意:**创建一个链式SQL实例,你可以用 <code php> $sql = $zbp->db->sql->get()->select('zbp_post')->where('1=1')->sql; </code> 然后执行这行$sql再获取结果 <code php> $array = $zbp->db->Query($sql); </code> ---- ===== SQL SELECT ===== 第1种写法 **使用select指令** <code php> //取category表所有的数据 $sql = $zbp->db->sql->get()->select('zbp_category')->sql; $array = $zbp->GetListType('Category', $sql); //遍历数据输出等 foreach ($array as $a) { ... } </code> **$sql生成数据** <code sql> SELECT * FROM zbp_category </code> 第2种写法 **使用selectany和from指令组合** <code php> //取category表的ID字段数组 $sql = $zbp->db->sql->get()->selectany('cate_ID')->from('zbp_category')->sql; $array = $zbp->db->query($sql); </code> **$sql生成数据** <code sql> SELECT cate_ID FROM zbp_category </code> ---- ===== SQL WHERE 子句 ===== 取ID为1的文章 <code php> $sql = $zbp->db->sql->get()->select("zbp_post") ->where(array('=', 'log_ID', "1")) ->sql; $articles = GetListType('Post', $sql); $article = $articles[0]; #where(array('=', 'log_ID', "1")) #可以写成 where(array('log_ID = 1')) #也能写成 where('log_ID = 1') # =号操作符可以换成<>,LIKE,>=,<= 等等 </code> **$sql生成数据** <code sql> SELECT * FROM zbp_post WHERE log_ID = '1' </code> ==== AND 运算符 ==== ** 用AND选择2个条件,更多的条件继续增加where ** <code php> $sql = $zbp->db->sql->get()->select("zbp_post") ->where(array('=', 'log_Status', "1")) ->where(array('=', 'log_Type', "0")) ->sql; $articles = GetListType('Post', $sql); </code> <code sql> SELECT * FROM zbp_post WHERE log_Status = '1' AND log_Type = '0' </code> ==== OR 运算符 ==== <code php> $sql = $zbp->db->sql->get() ->select("zbp_post") ->where( array('or', array( array('log_ID', '1'), array('log_Title', '2'), ), ) ) ->sql; #注意,此处的条件也可以写为->where('or',array('=', 'log_ID', '1'),array('=', 'log_Title', '2')) </code> <code sql> SELECT * FROM zbp_post WHERE ((1 = 1) AND ( log_ID = '1' OR log_Title = '2' ) ) </code> **其它的几种OR类型** <code php> #自定义操作符的,like的,可以和写where条件一样 $sql = $zbp->db->sql->get() ->select("zbp_post") ->where( array('or', array( array('<>', 'log_ID', '1'), array('LIKE', 'log_Title', '2'), ), ) ) ->sql; </code> <code sql> SELECT * FROM zbp_post WHERE ((1 = 1) AND ( log_ID <> '1' OR log_Title LIKE '2' ) ) </code> ==== LIKE 操作符 ==== ** 一般用于搜索中,可以把search换成like,但是不会自动在两边加上% ** <code php> $sql = $zbp->db->sql->get()->select("zbp_post") ->where(array('search', 'log_Title', "Test")) ->sql; </code> <code sql> SELECT * FROM zbp_post WHERE ((1 = 1) AND ( (log_Title LIKE '%Test%') ) ) </code> ==== IN 操作符 ==== <code php> $sql = $zbp->db->sql->get()->select("zbp_post") ->where(array('IN', 'log_ID', array(1, 2, 3, 4))) ->sql </code> <code sql> SELECT * FROM zbp_post WHERE ((1 = 1) AND (log_ID IN ( '1' , '2' , '3' , '4' ) ) ) </code> ==== BETWEEN 操作符 ==== <code php> $sql = $zbp->db->sql->get()->select("zbp_post") ->where(array('between', 'log_ID', "1", "3")) ->sql </code> <code sql> SELECT * FROM zbp_post WHERE (log_ID BETWEEN '1' AND '3') </code> ==== EXISTS 操作符 ==== <code php> $sql = $zbp->db->sql->get()->select("zbp_post") ->where(array('exists', 'SELECT 1')) ->sql; </code> <code sql> SELECT * FROM zbp_post WHERE EXISTS ( SELECT 1 ) </code> ---- ===== SQL JOIN连接(LEFT JOIN RIGHT JOIN,FULL JOIN) ===== <code php> $sql = $zbp->db->sql->get()->selectany('log_ID') ->from(array('zbp_post'=>'p')) ->leftjoin(array('zbp_postrelation'=>'pr')) ->on('p.log_ID = pr.pr_PostID') ->where('1 = 1') ->sql; #这里只举例了LEFTJOIN联表查询,还分别给2个表分别设了别名 </code> <code sql> SELECT log_ID FROM zbp_post AS p LEFT JOIN zbp_postrelation AS pr ON p.log_ID = pr.pr_PostID WHERE 1 = 1 </code> ---- ===== UNION 操作符 ===== ---- ===== SQL 别名 ===== ---- ===== SELECT LIMIT ===== <code php> * </code> <code sql> </code> ---- ===== SELECT DISTINCT ===== <code php> * </code> <code sql> </code> ---- ===== SQL ORDER BY ===== <code php> * </code> <code sql> </code> ---- ===== SQL GROUP BY 语句 ===== ---- ===== SQL HAVING 子句 ===== ---- ===== SQL INSERT INTO 语句 ===== <code php> * </code> <code sql> </code> ---- ===== SQL UPDATE 语句 ===== <code php> * </code> <code sql> </code> ---- ===== SQL DELETE 语句 ===== <code php> * </code> <code sql> </code> ---- ===== CREATE 数据库,表,索引 ===== ==== CREATE TABLE ==== 创建一个表,先定义数据结构: <code php> $tableData = array( 'a' => array('a', 'integer', '', 0, '主ID'), 'i' => array('i', 'boolean', '', false), 'k' => array('k', 'string', 250, ''), 'o' => array('o', 'string', 'longtext', '', '备注为某字段'), 'r' => array('r', 'float', '', ''), ); $sql = $zbp->db->sql->get()->create('zbp_table') ->data($tableData) ->option(array('engine' => 'MyISAM')) ->option(array('charset' => 'utf8')) ->option(array('collate' => 'utf8_general_ci')) ->sql; $zbp->db->query($sql); echo $sql; </code> 生成的$sql值为: <code sql> CREATE TABLE IF NOT EXISTS zbp_table ( a int(11) NOT NULL AUTO_INCREMENT COMMENT '主ID', i tinyint(1) NOT NULL DEFAULT '0', k varchar(250) NOT NULL DEFAULT '', o longtext NOT NULL COMMENT '备注为某字段', r float NOT NULL DEFAULT 0, PRIMARY KEY (a) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=1 ; </code> ** 备注:可以指定表的引擎和字符集,如果不指定则从option文件读取系统的配置 ** ---- ===== DROP 数据库,表,索引 ===== ---- ===== ALTER 修改 字段 ===== 添加字段 <code php> $sql = $zbp->db->sql->get()->ALTER("zbp_post") ->ADDCOLUMN('log_IsHide tinyint(4) NOT NULL DEFAULT \'0\'') ->ADDCOLUMN('log_CreateTime', 'int(11) NOT NULL DEFAULT \'0\'') ->ADDCOLUMN('log_Note', 'longtext', 'NOT NULL') ->sql; #ADDCOLUMN内的参数可以写成一个,也可以写成多个 </code> <code sql> ALTER TABLE zbp_post ADD COLUMN log_IsHide tinyint(4) NOT NULL DEFAULT '0' ,ADD COLUMN log_CreateTime int(11) NOT NULL DEFAULT '0' ,ADD COLUMN log_Note longtext NOT NULL </code> ---- ===== SQL 函数 AVG,COUNT,MIN,MAX =====
zblogphp/development/features/1.5/chainquery.1586261677.txt
· 最后更改: 2020/04/07 20:14 由
zx.asd
页面工具
显示页面
修订记录
页面重命名
回到顶部