Z-PHP_v4


db类

<h1>获取DB类对象</h1> <ul> <li><strong>单例模式</strong> Init()方法获取的是DB类的单例,不管在什么地方、多少次使用Init()方法,始终获取的是同一个DB类对象 一般情况下,只需要使用Init()方法获取DB类对象即可</li> <li><strong>获取多个DB类对象</strong> 只需要 new 几个就可以了 <strong>在init() 或者 new 的时候可以传入数据库的连接参数,格式同配置文件的 DB 字段</strong> <pre><code>$db = \ext\db::Init(); //单例模式 $db1 = new \ext\db('table'); //传入数据表名 $db2 = new \ext\db('table', $config); //传入数据表名和连接参数</code></pre></li> </ul> <h1>一些基本操作</h1> <ul> <li><strong>获取数据表名前缀 GetPrefix()</strong> <pre><code>$fix = $db-&gt;GetPrefix();</code></pre></li> <li><strong>获取错误信息 GetError()</strong> <pre><code>$err = $db-&gt;GetError();</code></pre></li> <li><strong>指定或者切换数据表 Table()</strong> <pre><code>$db-&gt;Table('user'); $db-&gt;Table('user a'); //同时指定别名</code></pre></li> <li><strong>获取 db 类的 pdo 对象</strong> <pre><code>$pdo = $db-&gt;PDO;</code></pre></li> <li><strong>获取执行的 sql 语句 PDO-&gt;GetSql()</strong> <pre><code>$db-&gt;PDO-&gt;GetSql();</code></pre></li> </ul> <h1><a href="http://z-php.com/doc-17"><font color=red>Where 条件相关请参照上一版文档</font></a></h1> <h1>写入相关的操作</h1> <ul> <li> <p><strong>添加数据 Insert()</strong> 数组 $data 键=&gt;值 和数据表 字段=&gt;值 对应</p> <pre><code>$data['code'=&gt;1, 'name'=&gt;'name']; $id = $db-&gt;Insert($data); // 第二个参数为true,当主键重复时不执行操作 $id = $db-&gt;Insert($data, true);</code></pre> </li> <li> <p><strong>批量添加数据 BatchInsert()</strong> <strong><font color=red>此方法不执行数据验证</font></strong> $keys 是要插入的数据字段,顺序和数组$data成员数据的顺序相对应 $data 是一个二维数组,成员数据的顺序和$keys的顺序相对应 返回成功插入数据的行数</p> <pre><code>$keys = ['id', 'tid', 'mark']; $data = [ [1, 2, ''], [2, 3, ''], [3, 5, ''], ]; $rows = $db-&gt;BatchInsert($keys, $data); // 第三个参数为true,当主键重复时不执行操作 $rows = $db-&gt;BatchInsert($keys, $data, true);</code></pre> </li> <li> <p><strong>更新数据 Update()</strong> <strong>支持 Join关联</strong> 数组 $data 键=&gt;值 和数据表 字段=&gt;值 对应 <strong>参数值被{{ }}包裹,会当作sql来执行,不做数据绑定 <font color=red>{{ }}里含有的参数变量需要自己检查是否是期望值,否则会有SQL注入风险</font></strong></p> <pre><code>$data['code'=&gt;1, 'name'=&gt;'name']; $result = $db-&gt;Where(['id'=&gt;1])-&gt;Update($data); //通过where条件指定 id 是1的数据行 // 参数值被{{}}包裹,会当作sql来执行,不做数据绑定 $save = ['num'=&gt;'{{num + 10}}']; // num字段值增加10 $result = $db-&gt;Where(['id'=&gt;1])-&gt;Update($save);</code></pre> </li> <li> <p><strong>删除数据 Delete()</strong> <strong>支持 Join关联</strong></p> <pre><code>$result = $db-&gt;Where(['id'=&gt;1])-&gt;Delete(); //通过where条件指定 id 是1的数据行</code></pre> </li> <li> <p><strong>有则更新无则插入 IfUpdate()</strong> <font color=red>返回值 -1: 执行了update操作; 0: 没有变更; 其它: 新增数据行的主键值 </font></p> <pre><code>$data['id'=&gt;1, 'name'=&gt;'name']; $result = $db-&gt;IfUpdate($data); // 如果要更新的字段有所不同: $update = ['nickname'=&gt;'nickname']; //指定要更新的数据 $result = $db-&gt;IfUpdate($data, $update);</code></pre> </li> </ul> <h1>查询相关的操作</h1> <ul> <li> <p><strong>查询一条数据 Find()</strong></p> <pre><code>$row = $db-&gt;Where($where)-&gt;Find(); $name = $db-&gt;Where($where)-&gt;Find('name'); // 查询一条数据中的一列 // 第二个参数为true:锁定数据行,事务处理中才有效 $name = $db-&gt;Where($where)-&gt;Find('', true);</code></pre> </li> <li> <p><strong>查询多条数据 Select()</strong></p> <pre><code>$rows = $db-&gt;Where($where)-&gt;Select(); $name = $db-&gt;Where($where)-&gt;Select('name'); // 查询多条数据中的一列 // 第二个参数为true:锁定数据行,事务处理中才有效 $name = $db-&gt;Where($where)-&gt;Select('', true);</code></pre> </li> <li> <p><strong>查询总数据量 Count()</strong></p> <pre><code>$number = $db-&gt;Where($where)-&gt;Count();</code></pre> </li> <li> <p><strong>限制返回的数据量 Limit()</strong></p> <pre><code>$rows = $db-&gt;Where($where)-&gt;Limit(10)-&gt;Select(); $rows = $db-&gt;Where($where)-&gt;Limit('100, 10')-&gt;Select();</code></pre> </li> <li> <p><strong>设置查询字段 Filed()</strong></p> <pre><code>$rows = $db-&gt;Field('id, name')-&gt;Where($where)-&gt;select(); $rows = $db-&gt;Field('id, name, SUM(`point`) AS point')-&gt;Where($where)-&gt;select();</code></pre> </li> <li> <p><strong>关联查询 Join()</strong></p> <pre><code>$where = "a.id &gt; 10"; $join = 'LEFT JOIN info b ON a.id=b.id'; $rows = $db-&gt;table('user a')-&gt;Join($join)-&gt;Where($where)-&gt;Select(); //支持多个join组合成数组: $join[] = 'LEFT JOIN info b ON a.id=b.id'; $join[] = 'LEFT JOIN bill c ON c.uid=b.uid'; // ... 更多的join</code></pre> </li> <li> <p><strong>排序 Order()</strong></p> <pre><code>$rows = $db-&gt;Where($where)-&gt;Order('uid DESC')-&gt;Select();</code></pre> </li> <li> <p><strong>分组查询 Group()</strong></p> <pre><code>$rows = $db-&gt;field($field)-&gt;Where($where)-&gt;Group('uid')-&gt;Select();</code></pre> </li> <li> <p><strong>聚合条件过滤 Having()</strong> <strong>Having() 参数跟 Where() 相同</strong></p> <pre><code>$where = "id &gt; 10"; $having = 'num &gt; 100'; $rows = $db-&gt;Field('uid, SUM(num) AS num')-&gt;Group('uid')-&gt;Having($having)-&gt;Where($where)-&gt;Select();</code></pre> </li> <li><strong>数据分页 Page()</strong> <pre><code>$conf = ['num' =&gt; $num, 'p' =&gt; $p, 'return' =&gt; true]; $data = $db-&gt;where($where)-&gt;Page($conf)-&gt;Select(); $page = $db-&gt;GetPage();</code></pre> <p><strong>参数说明</strong></p></li> </ul> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>说明</th> <th>默认值</th> </tr> </thead> <tbody> <tr> <td>p</td> <td>int</td> <td>页码</td> <td>1</td> </tr> <tr> <td>var</td> <td>string</td> <td>页码参数名(生成分页链接用)</td> <td>p</td> </tr> <tr> <td>num</td> <td>int</td> <td>每页数据量</td> <td>10</td> </tr> <tr> <td>max</td> <td>int</td> <td>最大页码数</td> <td>0:不限制</td> </tr> <tr> <td>inrange</td> <td>bool</td> <td>强制页码在合法范围(超出实际最大分页数时返回最后一页的数据)</td> <td>true</td> </tr> <tr> <td>rolls</td> <td>int</td> <td>生成的页码链接数量(生成分页链接用)</td> <td>10</td> </tr> <tr> <td>ver</td> <td>string</td> <td>版本号</td> <td>当前版本号,生成a链接用</td> </tr> <tr> <td>mod</td> <td>int</td> <td>url模式</td> <td>当前模式,生成a链接用</td> </tr> <tr> <td>nourl</td> <td>string</td> <td>空链接的地址</td> <td>javascript:;,生成a链接用</td> </tr> <tr> <td>return</td> <td>array</td> <td>需要返回的参数: [prev, next, first, last, list]<br>分别代表:上一页,下一页,第一页,最后一页,页码链接的数组</td> <td>无</td> </tr> </tbody> </table> <p><strong>如果不需要分页的具体链接,可将return字段设为 true,默认返回以下字段:</strong></p> <table> <thead> <tr> <th>字段</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>num</td> <td>int</td> <td>每页数据量</td> </tr> <tr> <td>pages</td> <td>int</td> <td>总分页数</td> </tr> <tr> <td>rows</td> <td>int</td> <td>总数据量</td> </tr> <tr> <td>r</td> <td>int</td> <td>当前页的数据量</td> </tr> <tr> <td>p</td> <td>int</td> <td>页码</td> </tr> </tbody> </table>

页面列表

ITEM_HTML