php学习之Model类
<div class="cnblogs_code"><pre><?<span style="color: rgba(0, 0, 0, 1)">php
</span><span style="color: rgba(128, 0, 128, 1)">$config</span> = <span style="color: rgba(0, 0, 255, 1)">include</span> 'config.php'; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">引入数据库配置文件</span>
<span style="color: rgba(128, 0, 128, 1)">$model</span> = <span style="color: rgba(0, 0, 255, 1)">new</span> Model(<span style="color: rgba(128, 0, 128, 1)">$config</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">测试案例
// $saveData=['username'=>'张三','mobile'=>12334123];
// echo $model->table('user')->insert($saveData);
// var_dump($model->table('user')->where('id=5')->delete());
// var_dump($model->table('user')->limit('0,6')->field('username,mobile')->where('id>1')->order('id desc')->select());
// $updateData=['username'=>'张三'];
// var_dump($model->table('user')->where('id=3')->update($updateData));
// var_dump($model->table('user')->max('mobile'));
// var_dump($model->table('user')->getByUserName('张三'));
// var_dump($model->sql);</span>
<span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Model
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">主机名</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(128, 0, 128, 1)">$host</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">用户名</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(128, 0, 128, 1)">$user</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">密码</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(128, 0, 128, 1)">$pwd</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">数据库名</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(128, 0, 128, 1)">$dbname</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">字符集</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(128, 0, 128, 1)">$charset</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">数据库前缀</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(128, 0, 128, 1)">$prefix</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">数据库连接资源</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(128, 0, 128, 1)">$link</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">数据表名 这里可以自己指定表名</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(128, 0, 128, 1)">$tableName</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">sql语句</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">操作数组 存放的就是所有的查询条件</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(128, 0, 128, 1)">$options</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* 构造方法,对成员变量进行初始化
*
* @param $config
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> __construct(<span style="color: rgba(128, 0, 128, 1)">$config</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">对成员变量一一进行初始化</span>
<span style="color: rgba(128, 0, 128, 1)">$this</span>->host = <span style="color: rgba(128, 0, 128, 1)">$config</span>['DB_HOST'<span style="color: rgba(0, 0, 0, 1)">];
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->user = <span style="color: rgba(128, 0, 128, 1)">$config</span>['DB_USER'<span style="color: rgba(0, 0, 0, 1)">];
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->pwd = <span style="color: rgba(128, 0, 128, 1)">$config</span>['DB_PWD'<span style="color: rgba(0, 0, 0, 1)">];
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->dbname = <span style="color: rgba(128, 0, 128, 1)">$config</span>['DB_NAME'<span style="color: rgba(0, 0, 0, 1)">];
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->charset = <span style="color: rgba(128, 0, 128, 1)">$config</span>['DB_CHARSET'<span style="color: rgba(0, 0, 0, 1)">];
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->prefix = <span style="color: rgba(128, 0, 128, 1)">$config</span>['DB_PREFIX'<span style="color: rgba(0, 0, 0, 1)">];
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">连接数据库</span>
<span style="color: rgba(128, 0, 128, 1)">$this</span>->link = <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">connect();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">得到数据表名user===>UserModel</span>
<span style="color: rgba(128, 0, 128, 1)">$this</span>->tableName = <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">getTableName();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">初始化option数组</span>
<span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">initOptions();
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* 连接数据库
*
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> connect()
{
</span><span style="color: rgba(128, 0, 128, 1)">$link</span> = <span style="color: rgba(0, 128, 128, 1)">mysqli_connect</span>(<span style="color: rgba(128, 0, 128, 1)">$this</span>->host, <span style="color: rgba(128, 0, 128, 1)">$this</span>->user, <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">pwd);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(128, 0, 128, 1)">$link</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">die</span>('数据库连接失败'<span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">选择数据库</span>
<span style="color: rgba(0, 128, 128, 1)">mysqli_select_db</span>(<span style="color: rgba(128, 0, 128, 1)">$link</span>, <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">dbname);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置字符集</span>
mysqli_set_charset(<span style="color: rgba(128, 0, 128, 1)">$link</span>, <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">charset);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">返回连接成功的资源</span>
<span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$link</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* 得到数据表名
*
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> getTableName()
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">第一种,如果设置了成员变量,那么通过成员变量来得到表名</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">empty</span>(<span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">tableName)) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span>->prefix . <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">tableName;
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">第二种,如果没有设置成员变量,那么通过类名来得到表名
//得到当前类名字符串</span>
<span style="color: rgba(128, 0, 128, 1)">$className</span> = <span style="color: rgba(0, 128, 128, 1)">get_class</span>(<span style="color: rgba(128, 0, 128, 1)">$this</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">userUserModel goodsGoodsModel</span>
<span style="color: rgba(128, 0, 128, 1)">$table</span> = <span style="color: rgba(0, 128, 128, 1)">strtolower</span>(<span style="color: rgba(0, 128, 128, 1)">substr</span>(<span style="color: rgba(128, 0, 128, 1)">$className</span>, 0, -5<span style="color: rgba(0, 0, 0, 1)">));
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span>->prefix . <span style="color: rgba(128, 0, 128, 1)">$table</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* 初始化option数组
*
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> initOptions()
{
</span><span style="color: rgba(128, 0, 128, 1)">$arr</span> = ['where', 'table', 'field', 'order', 'group', 'having', 'limit'<span style="color: rgba(0, 0, 0, 1)">];
</span><span style="color: rgba(0, 0, 255, 1)">foreach</span> (<span style="color: rgba(128, 0, 128, 1)">$arr</span> <span style="color: rgba(0, 0, 255, 1)">as</span> <span style="color: rgba(128, 0, 128, 1)">$value</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将options数组中这些键对应的值全部清空</span>
<span style="color: rgba(128, 0, 128, 1)">$this</span>->options[<span style="color: rgba(128, 0, 128, 1)">$value</span>] = ''<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(128, 0, 128, 1)">$value</span> === 'table'<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->options[<span style="color: rgba(128, 0, 128, 1)">$value</span>] = <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">tableName;
} </span><span style="color: rgba(0, 0, 255, 1)">elseif</span> (<span style="color: rgba(128, 0, 128, 1)">$value</span> == 'field'<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->options[<span style="color: rgba(128, 0, 128, 1)">$value</span>] = '*'<span style="color: rgba(0, 0, 0, 1)">;
}
}
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* field方法
*
* @param $field
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> field(<span style="color: rgba(128, 0, 128, 1)">$field</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">如果不为空,再进行处理</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">empty</span>(<span style="color: rgba(128, 0, 128, 1)">$field</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 128, 128, 1)">is_string</span>(<span style="color: rgba(128, 0, 128, 1)">$field</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->options['field'] = <span style="color: rgba(128, 0, 128, 1)">$field</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">elseif</span> (<span style="color: rgba(0, 128, 128, 1)">is_array</span>(<span style="color: rgba(128, 0, 128, 1)">$field</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->options['field'] = <span style="color: rgba(0, 128, 128, 1)">join</span>(',', <span style="color: rgba(128, 0, 128, 1)">$field</span><span style="color: rgba(0, 0, 0, 1)">);
}
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* //table方法
*
* @param $table
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> table(<span style="color: rgba(128, 0, 128, 1)">$table</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">empty</span>(<span style="color: rgba(128, 0, 128, 1)">$table</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->options['table'] = <span style="color: rgba(128, 0, 128, 1)">$this</span>->prefix . <span style="color: rgba(128, 0, 128, 1)">$table</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* where方法
*
* @param $where
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> where(<span style="color: rgba(128, 0, 128, 1)">$where</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">empty</span>(<span style="color: rgba(128, 0, 128, 1)">$where</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->options['where'] = 'where ' . <span style="color: rgba(128, 0, 128, 1)">$where</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* group方法
*
* @param $group
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> group(<span style="color: rgba(128, 0, 128, 1)">$group</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">empty</span>(<span style="color: rgba(128, 0, 128, 1)">$group</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->options['group'] = 'group by ' . <span style="color: rgba(128, 0, 128, 1)">$group</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* having方法
*
* @param $having
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> having(<span style="color: rgba(128, 0, 128, 1)">$having</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">empty</span>(<span style="color: rgba(128, 0, 128, 1)">$having</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->options['having'] = 'having ' . <span style="color: rgba(128, 0, 128, 1)">$having</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* order方法
*
* @param $order
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> order(<span style="color: rgba(128, 0, 128, 1)">$order</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">empty</span>(<span style="color: rgba(128, 0, 128, 1)">$order</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->options['order'] = 'order by ' . <span style="color: rgba(128, 0, 128, 1)">$order</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* limit方法
*
* @param $limit
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> limit(<span style="color: rgba(128, 0, 128, 1)">$limit</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">empty</span>(<span style="color: rgba(128, 0, 128, 1)">$limit</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 128, 128, 1)">is_string</span>(<span style="color: rgba(128, 0, 128, 1)">$limit</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->options['limit'] = 'limit ' . <span style="color: rgba(128, 0, 128, 1)">$limit</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">elseif</span> (<span style="color: rgba(0, 128, 128, 1)">is_array</span>(<span style="color: rgba(128, 0, 128, 1)">$limit</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->options['limit'] = 'limit ' . <span style="color: rgba(0, 128, 128, 1)">join</span>(',', <span style="color: rgba(128, 0, 128, 1)">$limit</span><span style="color: rgba(0, 0, 0, 1)">);
}
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* select方法
*
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> select()
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">先预写一个带占位符的sql语句</span>
<span style="color: rgba(128, 0, 128, 1)">$sql</span> = 'select %FIELD% from %TABLE% %WHERE% %GROUP% %HAVING% %ORDER% %LIMIT%'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将options中对应的值依次的替换上面的占位符</span>
<span style="color: rgba(128, 0, 128, 1)">$sql</span> = <span style="color: rgba(0, 128, 128, 1)">str_replace</span><span style="color: rgba(0, 0, 0, 1)">(
[</span>'%FIELD%', '%TABLE%', '%WHERE%', '%GROUP%', '%HAVING%', '%ORDER%', '%LIMIT%'],<span style="color: rgba(0, 0, 0, 1)">
[
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->options['field'], <span style="color: rgba(128, 0, 128, 1)">$this</span>->options['table'], <span style="color: rgba(128, 0, 128, 1)">$this</span>->options['where'], <span style="color: rgba(128, 0, 128, 1)">$this</span>->options['group'],
<span style="color: rgba(128, 0, 128, 1)">$this</span>->options['having'], <span style="color: rgba(128, 0, 128, 1)">$this</span>->options['order'], <span style="color: rgba(128, 0, 128, 1)">$this</span>->options['limit'<span style="color: rgba(0, 0, 0, 1)">]
]</span>,
<span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">
);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">保存一份sql语句</span>
<span style="color: rgba(128, 0, 128, 1)">$this</span>->sql = <span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">执行sql语句</span>
<span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span>->query(<span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* query
*
* @param $sql
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> query(<span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">清空option数组中的值</span>
<span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">initOptions();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">执行sql语句</span>
<span style="color: rgba(128, 0, 128, 1)">$result</span> = <span style="color: rgba(0, 128, 128, 1)">mysqli_query</span>(<span style="color: rgba(128, 0, 128, 1)">$this</span>->link, <span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">提取结果集存放到数组中</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(128, 0, 128, 1)">$result</span> && <span style="color: rgba(0, 128, 128, 1)">mysqli_affected_rows</span>(<span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">link)) {
</span><span style="color: rgba(0, 0, 255, 1)">while</span> (<span style="color: rgba(128, 0, 128, 1)">$data</span> = <span style="color: rgba(0, 128, 128, 1)">mysqli_fetch_assoc</span>(<span style="color: rgba(128, 0, 128, 1)">$result</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(128, 0, 128, 1)">$newData</span>[] = <span style="color: rgba(128, 0, 128, 1)">$data</span><span style="color: rgba(0, 0, 0, 1)">;
}
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">返回结果集</span>
<span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$newData</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* exec
*
* @param $sql
* @param boolean $isInsert
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> <span style="color: rgba(0, 128, 128, 1)">exec</span>(<span style="color: rgba(128, 0, 128, 1)">$sql</span>, <span style="color: rgba(128, 0, 128, 1)">$isInsert</span> = <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">清空option数组中的值</span>
<span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">initOptions();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">执行sql语句</span>
<span style="color: rgba(128, 0, 128, 1)">$result</span> = <span style="color: rgba(0, 128, 128, 1)">mysqli_query</span>(<span style="color: rgba(128, 0, 128, 1)">$this</span>->link, <span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(128, 0, 128, 1)">$result</span> && <span style="color: rgba(0, 128, 128, 1)">mysqli_affected_rows</span>(<span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">link)) {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">判断是否是插入语句,根据不同的语句返回不同的结果</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(128, 0, 128, 1)">$isInsert</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 128, 128, 1)">mysqli_insert_id</span>(<span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">link);
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 128, 128, 1)">mysqli_affected_rows</span>(<span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">link);
}
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">function</span> __get(<span style="color: rgba(128, 0, 128, 1)">$name</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(128, 0, 128, 1)">$name</span> == 'sql'<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">sql;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* insert函数
* insert into 表名(字段) value(值)
*
* @param $data关联数组,键就是字段名,值是字段值
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> insert(<span style="color: rgba(128, 0, 128, 1)">$data</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">处理值是字符串问题,两边需要添加单或双引号</span>
<span style="color: rgba(128, 0, 128, 1)">$data</span> = <span style="color: rgba(128, 0, 128, 1)">$this</span>->parseValue(<span style="color: rgba(128, 0, 128, 1)">$data</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">提取所有的键,即就是所有的字段</span>
<span style="color: rgba(128, 0, 128, 1)">$keys</span> = <span style="color: rgba(0, 128, 128, 1)">array_keys</span>(<span style="color: rgba(128, 0, 128, 1)">$data</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">提取所有的值</span>
<span style="color: rgba(128, 0, 128, 1)">$values</span> = <span style="color: rgba(0, 128, 128, 1)">array_values</span>(<span style="color: rgba(128, 0, 128, 1)">$data</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">增加数据的sql语句</span>
<span style="color: rgba(128, 0, 128, 1)">$sql</span> = 'insert into %TABLE%(%FIELD%) values(%VALUES%)'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(128, 0, 128, 1)">$sql</span> = <span style="color: rgba(0, 128, 128, 1)">str_replace</span>(['%TABLE%', '%FIELD%', '%VALUES%'], [<span style="color: rgba(128, 0, 128, 1)">$this</span>->options['table'], <span style="color: rgba(0, 128, 128, 1)">join</span>(',', <span style="color: rgba(128, 0, 128, 1)">$keys</span>), <span style="color: rgba(0, 128, 128, 1)">join</span>(',', <span style="color: rgba(128, 0, 128, 1)">$values</span>)], <span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(128, 0, 128, 1)">$this</span>->sql = <span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 128, 128, 1)">exec</span>(<span style="color: rgba(128, 0, 128, 1)">$sql</span>, <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* 传递进来一个数组,将数组中值为字符串的两边加上引号
*
* @param $data
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">function</span> parseValue(<span style="color: rgba(128, 0, 128, 1)">$data</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">遍历数组,判断是否为字符串,若是字符串,将其两边添加引号</span>
<span style="color: rgba(0, 0, 255, 1)">foreach</span> (<span style="color: rgba(128, 0, 128, 1)">$data</span> <span style="color: rgba(0, 0, 255, 1)">as</span> <span style="color: rgba(128, 0, 128, 1)">$key</span> => <span style="color: rgba(128, 0, 128, 1)">$value</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 128, 128, 1)">is_string</span>(<span style="color: rgba(128, 0, 128, 1)">$value</span><span style="color: rgba(0, 0, 0, 1)">)) {
</span><span style="color: rgba(128, 0, 128, 1)">$value</span> = '"' . <span style="color: rgba(128, 0, 128, 1)">$value</span> . '"'<span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(128, 0, 128, 1)">$newData</span>[<span style="color: rgba(128, 0, 128, 1)">$key</span>] = <span style="color: rgba(128, 0, 128, 1)">$value</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">返回处理后的数组</span>
<span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$newData</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* 删除函数
*
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> delete()
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">拼接sql语句</span>
<span style="color: rgba(128, 0, 128, 1)">$sql</span> = 'delete from %TABLE% %WHERE%'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(128, 0, 128, 1)">$sql</span> = <span style="color: rgba(0, 128, 128, 1)">str_replace</span>(['%TABLE%', '%WHERE%'], [<span style="color: rgba(128, 0, 128, 1)">$this</span>->options['table'], <span style="color: rgba(128, 0, 128, 1)">$this</span>->options['where']], <span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">保存sql语句</span>
<span style="color: rgba(128, 0, 128, 1)">$this</span>->sql = <span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">执行sql语句</span>
<span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 128, 128, 1)">exec</span>(<span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* 更新函数
* update 表名 set 字段名=字段值,字段名=字段值 where
*
* @param $data
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> update(<span style="color: rgba(128, 0, 128, 1)">$data</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">处理$data数组中值为字符串加引号的问题</span>
<span style="color: rgba(128, 0, 128, 1)">$data</span> = <span style="color: rgba(128, 0, 128, 1)">$this</span>->parseValue(<span style="color: rgba(128, 0, 128, 1)">$data</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将关联数组拼接为固定的格式键=值,键=值</span>
<span style="color: rgba(128, 0, 128, 1)">$value</span> = <span style="color: rgba(128, 0, 128, 1)">$this</span>->parseUpdate(<span style="color: rgba(128, 0, 128, 1)">$data</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">准备sql语句</span>
<span style="color: rgba(128, 0, 128, 1)">$sql</span> = 'update %TABLE% set %VALUE% %WHERE%'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(128, 0, 128, 1)">$sql</span> = <span style="color: rgba(0, 128, 128, 1)">str_replace</span>(['%TABLE%', '%VALUE%', '%WHERE%'], [<span style="color: rgba(128, 0, 128, 1)">$this</span>->options['table'], <span style="color: rgba(128, 0, 128, 1)">$value</span>, <span style="color: rgba(128, 0, 128, 1)">$this</span>->options['where']], <span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">保存sql语句</span>
<span style="color: rgba(128, 0, 128, 1)">$this</span>->sql = <span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">执行sql语句</span>
<span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 128, 128, 1)">exec</span>(<span style="color: rgba(128, 0, 128, 1)">$sql</span><span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* 将关联数组拼接为固定的格式
*
* @param $data
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">protected</span> <span style="color: rgba(0, 0, 255, 1)">function</span> parseUpdate(<span style="color: rgba(128, 0, 128, 1)">$data</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 0, 255, 1)">foreach</span> (<span style="color: rgba(128, 0, 128, 1)">$data</span> <span style="color: rgba(0, 0, 255, 1)">as</span> <span style="color: rgba(128, 0, 128, 1)">$key</span> => <span style="color: rgba(128, 0, 128, 1)">$value</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(128, 0, 128, 1)">$newData</span>[] = <span style="color: rgba(128, 0, 128, 1)">$key</span> . '=' . <span style="color: rgba(128, 0, 128, 1)">$value</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 128, 128, 1)">join</span>(',', <span style="color: rgba(128, 0, 128, 1)">$newData</span><span style="color: rgba(0, 0, 0, 1)">);
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* max函数
*
* @param $field
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> <span style="color: rgba(0, 128, 128, 1)">max</span>(<span style="color: rgba(128, 0, 128, 1)">$field</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">通过调用自己封装的方法进行查询</span>
<span style="color: rgba(128, 0, 128, 1)">$result</span> = <span style="color: rgba(128, 0, 128, 1)">$this</span>->field('max(' . <span style="color: rgba(128, 0, 128, 1)">$field</span> . ') as max')-><span style="color: rgba(0, 0, 0, 1)">select();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">select方法返回的是一个二维数组</span>
<span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$result</span>['max'<span style="color: rgba(0, 0, 0, 1)">];
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* 析构方法
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> __destruct()
{
</span><span style="color: rgba(0, 128, 128, 1)">mysqli_close</span>(<span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 0, 0, 1)">link);
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* getByName getByAge
*
* @param $name
* @param $args
* @return void
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span> __call(<span style="color: rgba(128, 0, 128, 1)">$name</span>, <span style="color: rgba(128, 0, 128, 1)">$args</span><span style="color: rgba(0, 0, 0, 1)">)
{
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取前5个字符</span>
<span style="color: rgba(128, 0, 128, 1)">$str</span> = <span style="color: rgba(0, 128, 128, 1)">substr</span>(<span style="color: rgba(128, 0, 128, 1)">$name</span>, 0, 5<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取后面的字段名</span>
<span style="color: rgba(128, 0, 128, 1)">$field</span> = <span style="color: rgba(0, 128, 128, 1)">strtolower</span>(<span style="color: rgba(0, 128, 128, 1)">substr</span>(<span style="color: rgba(128, 0, 128, 1)">$name</span>, 5<span style="color: rgba(0, 0, 0, 1)">));
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">判断前五个字符是否是getby</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(128, 0, 128, 1)">$str</span> === 'getBy'<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$this</span>->where(<span style="color: rgba(128, 0, 128, 1)">$field</span> . '="' . <span style="color: rgba(128, 0, 128, 1)">$args</span> . '"')-><span style="color: rgba(0, 0, 0, 1)">select();
}
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
}
}</span></pre>
</div>
<p>confing数据库配置文件,confing.php</p>
<div class="cnblogs_code">
<pre><?<span style="color: rgba(0, 0, 0, 1)">php
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> [
</span>'DB_HOST'=>'localhost',
'DB_USER'=>'root',
'DB_PWD'=>'123456',
'DB_NAME'=>'test',
'DB_CHARSET'=>'utf8',
'DB_PREFIX'=>'t_',<span style="color: rgba(0, 0, 0, 1)">
];</span></pre>
</div>
<p> </p>
<p> </p>
<div style="color: rgba(212, 212, 212, 1); background-color: rgba(30, 30, 30, 1); font-family: Consolas, "Courier New", monospace; font-size: 20px; line-height: 27px; white-space: pre">
<div><span style="color: rgba(86, 156, 214, 1)"><?php</span></div>
<br>
<div><span style="color: rgba(156, 220, 254, 1)">$config</span> = <span style="color: rgba(197, 134, 192, 1)">include</span> <span style="color: rgba(206, 145, 120, 1)">'config.php'</span>; <span style="color: rgba(106, 153, 85, 1)">//引入数据库配置文件</span></div>
<div><span style="color: rgba(156, 220, 254, 1)">$model</span> = <span style="color: rgba(86, 156, 214, 1)">new</span> <span style="color: rgba(78, 201, 176, 1)">Model</span>(<span style="color: rgba(156, 220, 254, 1)">$config</span>);</div>
<div><span style="color: rgba(106, 153, 85, 1)">//测试案例</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// $saveData=['username'=>'张三','mobile'=>12334123];</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// echo $model->table('user')->insert($saveData);</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// var_dump($model->table('user')->where('id=5')->delete());</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// var_dump($model->table('user')->limit('0,6')->field('username,mobile')->where('id>1')->order('id desc')->select());</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// $updateData=['username'=>'张三'];</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// var_dump($model->table('user')->where('id=3')->update($updateData));</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// var_dump($model->table('user')->max('mobile'));</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// var_dump($model->table('user')->getByUserName('张三'));</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// var_dump($model->sql);</span></div>
<br>
<div><span style="color: rgba(86, 156, 214, 1)">class</span> <span style="color: rgba(78, 201, 176, 1)">Model</span></div>
<div>{</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//主机名</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(156, 220, 254, 1)">$host</span>;</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//用户名</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(156, 220, 254, 1)">$user</span>;</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//密码</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(156, 220, 254, 1)">$pwd</span>;</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//数据库名</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(156, 220, 254, 1)">$dbname</span>;</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//字符集</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(156, 220, 254, 1)">$charset</span>;</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//数据库前缀</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(156, 220, 254, 1)">$prefix</span>;</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">//数据库连接资源</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(156, 220, 254, 1)">$link</span>;</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//数据表名 这里可以自己指定表名</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(156, 220, 254, 1)">$tableName</span>;</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">//sql语句</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(156, 220, 254, 1)">$sql</span>;</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//操作数组 存放的就是所有的查询条件</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(156, 220, 254, 1)">$options</span>;</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * 构造方法,对成员变量进行初始化</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $config</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">__construct</span>(<span style="color: rgba(156, 220, 254, 1)">$config</span>)</div>
<div> {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//对成员变量一一进行初始化</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">host</span> = <span style="color: rgba(156, 220, 254, 1)">$config</span>[<span style="color: rgba(206, 145, 120, 1)">'DB_HOST'</span>];</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">user</span> = <span style="color: rgba(156, 220, 254, 1)">$config</span>[<span style="color: rgba(206, 145, 120, 1)">'DB_USER'</span>];</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">pwd</span> = <span style="color: rgba(156, 220, 254, 1)">$config</span>[<span style="color: rgba(206, 145, 120, 1)">'DB_PWD'</span>];</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">dbname</span> = <span style="color: rgba(156, 220, 254, 1)">$config</span>[<span style="color: rgba(206, 145, 120, 1)">'DB_NAME'</span>];</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">charset</span> = <span style="color: rgba(156, 220, 254, 1)">$config</span>[<span style="color: rgba(206, 145, 120, 1)">'DB_CHARSET'</span>];</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">prefix</span> = <span style="color: rgba(156, 220, 254, 1)">$config</span>[<span style="color: rgba(206, 145, 120, 1)">'DB_PREFIX'</span>];</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">//连接数据库</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">link</span> = <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">connect</span>();</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">//得到数据表名user===>UserModel</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">tableName</span> = <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">getTableName</span>();</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">//初始化option数组</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">initOptions</span>();</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * 连接数据库</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">connect</span>()</div>
<div> {</div>
<div> <span style="color: rgba(156, 220, 254, 1)">$link</span> = <span style="color: rgba(220, 220, 170, 1)">mysqli_connect</span>(<span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">host</span>, <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">user</span>, <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">pwd</span>);</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (!<span style="color: rgba(156, 220, 254, 1)">$link</span>) {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">die</span>(<span style="color: rgba(206, 145, 120, 1)">'数据库连接失败'</span>);</div>
<div> }</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//选择数据库</span></div>
<div> <span style="color: rgba(220, 220, 170, 1)">mysqli_select_db</span>(<span style="color: rgba(156, 220, 254, 1)">$link</span>, <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">dbname</span>);</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//设置字符集</span></div>
<div> <span style="color: rgba(220, 220, 170, 1)">mysqli_set_charset</span>(<span style="color: rgba(156, 220, 254, 1)">$link</span>, <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">charset</span>);</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//返回连接成功的资源</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(156, 220, 254, 1)">$link</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * 得到数据表名</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">getTableName</span>()</div>
<div> {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//第一种,如果设置了成员变量,那么通过成员变量来得到表名</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (!<span style="color: rgba(220, 220, 170, 1)">empty</span>(<span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">tableName</span>)) {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">prefix</span> . <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">tableName</span>;</div>
<div> }</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//第二种,如果没有设置成员变量,那么通过类名来得到表名</span></div>
<div> <span style="color: rgba(106, 153, 85, 1)">//得到当前类名字符串</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$className</span> = <span style="color: rgba(220, 220, 170, 1)">get_class</span>(<span style="color: rgba(86, 156, 214, 1)">$this</span>);</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//userUserModel goodsGoodsModel</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$table</span> = <span style="color: rgba(220, 220, 170, 1)">strtolower</span>(<span style="color: rgba(220, 220, 170, 1)">substr</span>(<span style="color: rgba(156, 220, 254, 1)">$className</span>, <span style="color: rgba(181, 206, 168, 1)">0</span>, -<span style="color: rgba(181, 206, 168, 1)">5</span>));</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">prefix</span> . <span style="color: rgba(156, 220, 254, 1)">$table</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * 初始化option数组</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">initOptions</span>()</div>
<div> {</div>
<div> <span style="color: rgba(156, 220, 254, 1)">$arr</span> = [<span style="color: rgba(206, 145, 120, 1)">'where'</span>, <span style="color: rgba(206, 145, 120, 1)">'table'</span>, <span style="color: rgba(206, 145, 120, 1)">'field'</span>, <span style="color: rgba(206, 145, 120, 1)">'order'</span>, <span style="color: rgba(206, 145, 120, 1)">'group'</span>, <span style="color: rgba(206, 145, 120, 1)">'having'</span>, <span style="color: rgba(206, 145, 120, 1)">'limit'</span>];</div>
<div> <span style="color: rgba(197, 134, 192, 1)">foreach</span> (<span style="color: rgba(156, 220, 254, 1)">$arr</span> as <span style="color: rgba(156, 220, 254, 1)">$value</span>) {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//将options数组中这些键对应的值全部清空</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(156, 220, 254, 1)">$value</span>] = <span style="color: rgba(206, 145, 120, 1)">''</span>;</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (<span style="color: rgba(156, 220, 254, 1)">$value</span> === <span style="color: rgba(206, 145, 120, 1)">'table'</span>) {</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(156, 220, 254, 1)">$value</span>] = <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">tableName</span>;</div>
<div> } <span style="color: rgba(197, 134, 192, 1)">elseif</span> (<span style="color: rgba(156, 220, 254, 1)">$value</span> == <span style="color: rgba(206, 145, 120, 1)">'field'</span>) {</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(156, 220, 254, 1)">$value</span>] = <span style="color: rgba(206, 145, 120, 1)">'*'</span>;</div>
<div> }</div>
<div> }</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * field方法</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $field</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">field</span>(<span style="color: rgba(156, 220, 254, 1)">$field</span>)</div>
<div> {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//如果不为空,再进行处理</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (!<span style="color: rgba(220, 220, 170, 1)">empty</span>(<span style="color: rgba(156, 220, 254, 1)">$field</span>)) {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (<span style="color: rgba(220, 220, 170, 1)">is_string</span>(<span style="color: rgba(156, 220, 254, 1)">$field</span>)) {</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'field'</span>] = <span style="color: rgba(156, 220, 254, 1)">$field</span>;</div>
<div> } <span style="color: rgba(197, 134, 192, 1)">elseif</span> (<span style="color: rgba(220, 220, 170, 1)">is_array</span>(<span style="color: rgba(156, 220, 254, 1)">$field</span>)) {</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'field'</span>] = <span style="color: rgba(220, 220, 170, 1)">join</span>(<span style="color: rgba(206, 145, 120, 1)">','</span>, <span style="color: rgba(156, 220, 254, 1)">$field</span>);</div>
<div> }</div>
<div> }</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * //table方法</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $table</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">table</span>(<span style="color: rgba(156, 220, 254, 1)">$table</span>)</div>
<div> {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (!<span style="color: rgba(220, 220, 170, 1)">empty</span>(<span style="color: rgba(156, 220, 254, 1)">$table</span>)) {</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'table'</span>] = <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">prefix</span> . <span style="color: rgba(156, 220, 254, 1)">$table</span>;</div>
<div> }</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * where方法</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $where</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">where</span>(<span style="color: rgba(156, 220, 254, 1)">$where</span>)</div>
<div> {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (!<span style="color: rgba(220, 220, 170, 1)">empty</span>(<span style="color: rgba(156, 220, 254, 1)">$where</span>)) {</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'where'</span>] = <span style="color: rgba(206, 145, 120, 1)">'where '</span> . <span style="color: rgba(156, 220, 254, 1)">$where</span>;</div>
<div> }</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * group方法</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $group</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">group</span>(<span style="color: rgba(156, 220, 254, 1)">$group</span>)</div>
<div> {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (!<span style="color: rgba(220, 220, 170, 1)">empty</span>(<span style="color: rgba(156, 220, 254, 1)">$group</span>)) {</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'group'</span>] = <span style="color: rgba(206, 145, 120, 1)">'group by '</span> . <span style="color: rgba(156, 220, 254, 1)">$group</span>;</div>
<div> }</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * having方法</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $having</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">having</span>(<span style="color: rgba(156, 220, 254, 1)">$having</span>)</div>
<div> {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (!<span style="color: rgba(220, 220, 170, 1)">empty</span>(<span style="color: rgba(156, 220, 254, 1)">$having</span>)) {</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'having'</span>] = <span style="color: rgba(206, 145, 120, 1)">'having '</span> . <span style="color: rgba(156, 220, 254, 1)">$having</span>;</div>
<div> }</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * order方法</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $order</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">order</span>(<span style="color: rgba(156, 220, 254, 1)">$order</span>)</div>
<div> {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (!<span style="color: rgba(220, 220, 170, 1)">empty</span>(<span style="color: rgba(156, 220, 254, 1)">$order</span>)) {</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'order'</span>] = <span style="color: rgba(206, 145, 120, 1)">'order by '</span> . <span style="color: rgba(156, 220, 254, 1)">$order</span>;</div>
<div> }</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * limit方法</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $limit</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">limit</span>(<span style="color: rgba(156, 220, 254, 1)">$limit</span>)</div>
<div> {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (!<span style="color: rgba(220, 220, 170, 1)">empty</span>(<span style="color: rgba(156, 220, 254, 1)">$limit</span>)) {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (<span style="color: rgba(220, 220, 170, 1)">is_string</span>(<span style="color: rgba(156, 220, 254, 1)">$limit</span>)) {</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'limit'</span>] = <span style="color: rgba(206, 145, 120, 1)">'limit '</span> . <span style="color: rgba(156, 220, 254, 1)">$limit</span>;</div>
<div> } <span style="color: rgba(197, 134, 192, 1)">elseif</span> (<span style="color: rgba(220, 220, 170, 1)">is_array</span>(<span style="color: rgba(156, 220, 254, 1)">$limit</span>)) {</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'limit'</span>] = <span style="color: rgba(206, 145, 120, 1)">'limit '</span> . <span style="color: rgba(220, 220, 170, 1)">join</span>(<span style="color: rgba(206, 145, 120, 1)">','</span>, <span style="color: rgba(156, 220, 254, 1)">$limit</span>);</div>
<div> }</div>
<div> }</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * select方法</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">select</span>()</div>
<div> {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//先预写一个带占位符的sql语句</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$sql</span> = <span style="color: rgba(206, 145, 120, 1)">'select %FIELD% from %TABLE% %WHERE% %GROUP% %HAVING% %ORDER% %LIMIT%'</span>;</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//将options中对应的值依次的替换上面的占位符</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$sql</span> = <span style="color: rgba(220, 220, 170, 1)">str_replace</span>(</div>
<div> [<span style="color: rgba(206, 145, 120, 1)">'%FIELD%'</span>, <span style="color: rgba(206, 145, 120, 1)">'%TABLE%'</span>, <span style="color: rgba(206, 145, 120, 1)">'%WHERE%'</span>, <span style="color: rgba(206, 145, 120, 1)">'%GROUP%'</span>, <span style="color: rgba(206, 145, 120, 1)">'%HAVING%'</span>, <span style="color: rgba(206, 145, 120, 1)">'%ORDER%'</span>, <span style="color: rgba(206, 145, 120, 1)">'%LIMIT%'</span>],</div>
<div> [</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'field'</span>], <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'table'</span>], <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'where'</span>], <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'group'</span>],</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'having'</span>], <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'order'</span>], <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'limit'</span>]</div>
<div> ],</div>
<div> <span style="color: rgba(156, 220, 254, 1)">$sql</span></div>
<div> );</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//保存一份sql语句</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">sql</span> = <span style="color: rgba(156, 220, 254, 1)">$sql</span>;</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//执行sql语句</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">query</span>(<span style="color: rgba(156, 220, 254, 1)">$sql</span>);</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * query</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $sql</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">query</span>(<span style="color: rgba(156, 220, 254, 1)">$sql</span>)</div>
<div> {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//清空option数组中的值</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">initOptions</span>();</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//执行sql语句</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$result</span> = <span style="color: rgba(220, 220, 170, 1)">mysqli_query</span>(<span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">link</span>, <span style="color: rgba(156, 220, 254, 1)">$sql</span>);</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//提取结果集存放到数组中</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (<span style="color: rgba(156, 220, 254, 1)">$result</span> && <span style="color: rgba(220, 220, 170, 1)">mysqli_affected_rows</span>(<span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">link</span>)) {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">while</span> (<span style="color: rgba(156, 220, 254, 1)">$data</span> = <span style="color: rgba(220, 220, 170, 1)">mysqli_fetch_assoc</span>(<span style="color: rgba(156, 220, 254, 1)">$result</span>)) {</div>
<div> <span style="color: rgba(156, 220, 254, 1)">$newData</span>[] = <span style="color: rgba(156, 220, 254, 1)">$data</span>;</div>
<div> }</div>
<div> }</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//返回结果集</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(156, 220, 254, 1)">$newData</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * exec</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $sql</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(86, 156, 214, 1)">boolean</span><span style="color: rgba(106, 153, 85, 1)"> $isInsert</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">exec</span>(<span style="color: rgba(156, 220, 254, 1)">$sql</span>,<span style="color: rgba(156, 220, 254, 1)"> $isInsert</span> = <span style="color: rgba(86, 156, 214, 1)">false</span>)</div>
<div> {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//清空option数组中的值</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">initOptions</span>();</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//执行sql语句</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$result</span> = <span style="color: rgba(220, 220, 170, 1)">mysqli_query</span>(<span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">link</span>, <span style="color: rgba(156, 220, 254, 1)">$sql</span>);</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (<span style="color: rgba(156, 220, 254, 1)">$result</span> && <span style="color: rgba(220, 220, 170, 1)">mysqli_affected_rows</span>(<span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">link</span>)) {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//判断是否是插入语句,根据不同的语句返回不同的结果</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (<span style="color: rgba(156, 220, 254, 1)">$isInsert</span>) {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(220, 220, 170, 1)">mysqli_insert_id</span>(<span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">link</span>);</div>
<div> } <span style="color: rgba(197, 134, 192, 1)">else</span> {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(220, 220, 170, 1)">mysqli_affected_rows</span>(<span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">link</span>);</div>
<div> }</div>
<div> }</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">false</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">__get</span>(<span style="color: rgba(156, 220, 254, 1)">$name</span>)</div>
<div> {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (<span style="color: rgba(156, 220, 254, 1)">$name</span> == <span style="color: rgba(206, 145, 120, 1)">'sql'</span>) {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">sql</span>;</div>
<div> }</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">false</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * insert函数</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * insert into 表名(字段) value(值)</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $data关联数组,键就是字段名,值是字段值</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">insert</span>(<span style="color: rgba(156, 220, 254, 1)">$data</span>)</div>
<div> {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//处理值是字符串问题,两边需要添加单或双引号</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$data</span> = <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">parseValue</span>(<span style="color: rgba(156, 220, 254, 1)">$data</span>);</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//提取所有的键,即就是所有的字段</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$keys</span> = <span style="color: rgba(220, 220, 170, 1)">array_keys</span>(<span style="color: rgba(156, 220, 254, 1)">$data</span>);</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//提取所有的值</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$values</span> = <span style="color: rgba(220, 220, 170, 1)">array_values</span>(<span style="color: rgba(156, 220, 254, 1)">$data</span>);</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//增加数据的sql语句</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$sql</span> = <span style="color: rgba(206, 145, 120, 1)">'insert into %TABLE%(%FIELD%) values(%VALUES%)'</span>;</div>
<div> <span style="color: rgba(156, 220, 254, 1)">$sql</span> = <span style="color: rgba(220, 220, 170, 1)">str_replace</span>([<span style="color: rgba(206, 145, 120, 1)">'%TABLE%'</span>, <span style="color: rgba(206, 145, 120, 1)">'%FIELD%'</span>, <span style="color: rgba(206, 145, 120, 1)">'%VALUES%'</span>], [<span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'table'</span>], <span style="color: rgba(220, 220, 170, 1)">join</span>(<span style="color: rgba(206, 145, 120, 1)">','</span>, <span style="color: rgba(156, 220, 254, 1)">$keys</span>), <span style="color: rgba(220, 220, 170, 1)">join</span>(<span style="color: rgba(206, 145, 120, 1)">','</span>, <span style="color: rgba(156, 220, 254, 1)">$values</span>)], <span style="color: rgba(156, 220, 254, 1)">$sql</span>);</div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">sql</span> = <span style="color: rgba(156, 220, 254, 1)">$sql</span>;</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">exec</span>(<span style="color: rgba(156, 220, 254, 1)">$sql</span>, <span style="color: rgba(86, 156, 214, 1)">true</span>);</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * 传递进来一个数组,将数组中值为字符串的两边加上引号</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $data</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">parseValue</span>(<span style="color: rgba(156, 220, 254, 1)">$data</span>)</div>
<div> {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//遍历数组,判断是否为字符串,若是字符串,将其两边添加引号</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">foreach</span> (<span style="color: rgba(156, 220, 254, 1)">$data</span> as <span style="color: rgba(156, 220, 254, 1)">$key</span> => <span style="color: rgba(156, 220, 254, 1)">$value</span>) {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (<span style="color: rgba(220, 220, 170, 1)">is_string</span>(<span style="color: rgba(156, 220, 254, 1)">$value</span>)) {</div>
<div> <span style="color: rgba(156, 220, 254, 1)">$value</span> = <span style="color: rgba(206, 145, 120, 1)">'"'</span> . <span style="color: rgba(156, 220, 254, 1)">$value</span> . <span style="color: rgba(206, 145, 120, 1)">'"'</span>;</div>
<div> }</div>
<div> <span style="color: rgba(156, 220, 254, 1)">$newData</span>[<span style="color: rgba(156, 220, 254, 1)">$key</span>] = <span style="color: rgba(156, 220, 254, 1)">$value</span>;</div>
<div> }</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//返回处理后的数组</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(156, 220, 254, 1)">$newData</span>;</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * 删除函数</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">delete</span>()</div>
<div> {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//拼接sql语句</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$sql</span> = <span style="color: rgba(206, 145, 120, 1)">'delete from %TABLE% %WHERE%'</span>;</div>
<div> <span style="color: rgba(156, 220, 254, 1)">$sql</span> = <span style="color: rgba(220, 220, 170, 1)">str_replace</span>([<span style="color: rgba(206, 145, 120, 1)">'%TABLE%'</span>, <span style="color: rgba(206, 145, 120, 1)">'%WHERE%'</span>], [<span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'table'</span>], <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'where'</span>]], <span style="color: rgba(156, 220, 254, 1)">$sql</span>);</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//保存sql语句</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">sql</span> = <span style="color: rgba(156, 220, 254, 1)">$sql</span>;</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//执行sql语句</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">exec</span>(<span style="color: rgba(156, 220, 254, 1)">$sql</span>);</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * 更新函数</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * update 表名 set 字段名=字段值,字段名=字段值 where</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $data</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">update</span>(<span style="color: rgba(156, 220, 254, 1)">$data</span>)</div>
<div> {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//处理$data数组中值为字符串加引号的问题</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$data</span> = <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">parseValue</span>(<span style="color: rgba(156, 220, 254, 1)">$data</span>);</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//将关联数组拼接为固定的格式键=值,键=值</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$value</span> = <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">parseUpdate</span>(<span style="color: rgba(156, 220, 254, 1)">$data</span>);</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//准备sql语句</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$sql</span> = <span style="color: rgba(206, 145, 120, 1)">'update %TABLE% set %VALUE% %WHERE%'</span>;</div>
<div> <span style="color: rgba(156, 220, 254, 1)">$sql</span> = <span style="color: rgba(220, 220, 170, 1)">str_replace</span>([<span style="color: rgba(206, 145, 120, 1)">'%TABLE%'</span>, <span style="color: rgba(206, 145, 120, 1)">'%VALUE%'</span>, <span style="color: rgba(206, 145, 120, 1)">'%WHERE%'</span>], [<span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'table'</span>], <span style="color: rgba(156, 220, 254, 1)">$value</span>, <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">options</span>[<span style="color: rgba(206, 145, 120, 1)">'where'</span>]], <span style="color: rgba(156, 220, 254, 1)">$sql</span>);</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//保存sql语句</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">sql</span> = <span style="color: rgba(156, 220, 254, 1)">$sql</span>;</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//执行sql语句</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">exec</span>(<span style="color: rgba(156, 220, 254, 1)">$sql</span>);</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * 将关联数组拼接为固定的格式</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $data</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">protected</span> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">parseUpdate</span>(<span style="color: rgba(156, 220, 254, 1)">$data</span>)</div>
<div> {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">foreach</span> (<span style="color: rgba(156, 220, 254, 1)">$data</span> as <span style="color: rgba(156, 220, 254, 1)">$key</span> => <span style="color: rgba(156, 220, 254, 1)">$value</span>) {</div>
<div> <span style="color: rgba(156, 220, 254, 1)">$newData</span>[] = <span style="color: rgba(156, 220, 254, 1)">$key</span> . <span style="color: rgba(206, 145, 120, 1)">'='</span> . <span style="color: rgba(156, 220, 254, 1)">$value</span>;</div>
<div> }</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(220, 220, 170, 1)">join</span>(<span style="color: rgba(206, 145, 120, 1)">','</span>, <span style="color: rgba(156, 220, 254, 1)">$newData</span>);</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * max函数</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $field</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">max</span>(<span style="color: rgba(156, 220, 254, 1)">$field</span>)</div>
<div> {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//通过调用自己封装的方法进行查询</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$result</span> = <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">field</span>(<span style="color: rgba(206, 145, 120, 1)">'max('</span> . <span style="color: rgba(156, 220, 254, 1)">$field</span> . <span style="color: rgba(206, 145, 120, 1)">') as max'</span>)-><span style="color: rgba(220, 220, 170, 1)">select</span>();</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//select方法返回的是一个二维数组</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(156, 220, 254, 1)">$result</span>[<span style="color: rgba(181, 206, 168, 1)">0</span>][<span style="color: rgba(206, 145, 120, 1)">'max'</span>];</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * 析构方法</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">__destruct</span>()</div>
<div> {</div>
<div> <span style="color: rgba(220, 220, 170, 1)">mysqli_close</span>(<span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(156, 220, 254, 1)">link</span>);</div>
<div> }</div>
<br>
<div> <span style="color: rgba(106, 153, 85, 1)">/**</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * getByName getByAge</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> *</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $name</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@param</span><span style="color: rgba(106, 153, 85, 1)"> $args</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> * </span><span style="color: rgba(86, 156, 214, 1)">@return</span><span style="color: rgba(86, 156, 214, 1)">void</span></div>
<div><span style="color: rgba(106, 153, 85, 1)"> */</span></div>
<div> <span style="color: rgba(86, 156, 214, 1)">function</span> <span style="color: rgba(220, 220, 170, 1)">__call</span>(<span style="color: rgba(156, 220, 254, 1)">$name</span>,<span style="color: rgba(156, 220, 254, 1)"> $args</span>)</div>
<div> {</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//获取前5个字符</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$str</span> = <span style="color: rgba(220, 220, 170, 1)">substr</span>(<span style="color: rgba(156, 220, 254, 1)">$name</span>, <span style="color: rgba(181, 206, 168, 1)">0</span>, <span style="color: rgba(181, 206, 168, 1)">5</span>);</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//获取后面的字段名</span></div>
<div> <span style="color: rgba(156, 220, 254, 1)">$field</span> = <span style="color: rgba(220, 220, 170, 1)">strtolower</span>(<span style="color: rgba(220, 220, 170, 1)">substr</span>(<span style="color: rgba(156, 220, 254, 1)">$name</span>, <span style="color: rgba(181, 206, 168, 1)">5</span>));</div>
<div> <span style="color: rgba(106, 153, 85, 1)">//判断前五个字符是否是getby</span></div>
<div> <span style="color: rgba(197, 134, 192, 1)">if</span> (<span style="color: rgba(156, 220, 254, 1)">$str</span> === <span style="color: rgba(206, 145, 120, 1)">'getBy'</span>) {</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">$this</span>-><span style="color: rgba(220, 220, 170, 1)">where</span>(<span style="color: rgba(156, 220, 254, 1)">$field</span> . <span style="color: rgba(206, 145, 120, 1)">'="'</span> . <span style="color: rgba(156, 220, 254, 1)">$args</span>[<span style="color: rgba(181, 206, 168, 1)">0</span>] . <span style="color: rgba(206, 145, 120, 1)">'"'</span>)-><span style="color: rgba(220, 220, 170, 1)">select</span>();</div>
<div> }</div>
<div> <span style="color: rgba(197, 134, 192, 1)">return</span> <span style="color: rgba(86, 156, 214, 1)">false</span>;</div>
<div> }</div>
<div>}</div>
</div><br><br>
来源:https://www.cnblogs.com/shengChristine/p/10966007.html
頁:
[1]