绰绰有鱼 發表於 2019-6-3 10:06:00

php学习之Model类

<div class="cnblogs_code">
<pre>&lt;?<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'=&gt;'张三','mobile'=&gt;12334123];
// echo $model-&gt;table('user')-&gt;insert($saveData);
// var_dump($model-&gt;table('user')-&gt;where('id=5')-&gt;delete());
// var_dump($model-&gt;table('user')-&gt;limit('0,6')-&gt;field('username,mobile')-&gt;where('id&gt;1')-&gt;order('id desc')-&gt;select());
// $updateData=['username'=&gt;'张三'];
// var_dump($model-&gt;table('user')-&gt;where('id=3')-&gt;update($updateData));
// var_dump($model-&gt;table('user')-&gt;max('mobile'));
// var_dump($model-&gt;table('user')-&gt;getByUserName('张三'));
// var_dump($model-&gt;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>-&gt;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>-&gt;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>-&gt;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>-&gt;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>-&gt;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>-&gt;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>-&gt;link = <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;<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===&gt;UserModel</span>
      <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;tableName = <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;<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>-&gt;<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>-&gt;host, <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;user, <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;prefix . <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;<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>-&gt;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>-&gt;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>-&gt;options[<span style="color: rgba(128, 0, 128, 1)">$value</span>] = <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;<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>-&gt;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>-&gt;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>-&gt;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>-&gt;options['table'] = <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;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>-&gt;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>-&gt;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>-&gt;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>-&gt;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>-&gt;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>-&gt;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>-&gt;options['field'], <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;options['table'], <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;options['where'], <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;options['group'],
                <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;options['having'], <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;options['order'], <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;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>-&gt;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>-&gt;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>-&gt;<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>-&gt;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> &amp;&amp; <span style="color: rgba(0, 128, 128, 1)">mysqli_affected_rows</span>(<span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;<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>-&gt;<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>-&gt;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> &amp;&amp; <span style="color: rgba(0, 128, 128, 1)">mysqli_affected_rows</span>(<span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;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>-&gt;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>-&gt;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>-&gt;<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> =&gt; <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>-&gt;options['table'], <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;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>-&gt;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>-&gt;<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>-&gt;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>-&gt;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>-&gt;options['table'], <span style="color: rgba(128, 0, 128, 1)">$value</span>, <span style="color: rgba(128, 0, 128, 1)">$this</span>-&gt;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>-&gt;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>-&gt;<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> =&gt; <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>-&gt;field('max(' . <span style="color: rgba(128, 0, 128, 1)">$field</span> . ') as max')-&gt;<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>-&gt;<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>-&gt;where(<span style="color: rgba(128, 0, 128, 1)">$field</span> . '="' . <span style="color: rgba(128, 0, 128, 1)">$args</span> . '"')-&gt;<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>&lt;?<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'=&gt;'localhost',
    'DB_USER'=&gt;'root',
    'DB_PWD'=&gt;'123456',
    'DB_NAME'=&gt;'test',
    'DB_CHARSET'=&gt;'utf8',
    'DB_PREFIX'=&gt;'t_',<span style="color: rgba(0, 0, 0, 1)">
];</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div style="color: rgba(212, 212, 212, 1); background-color: rgba(30, 30, 30, 1); font-family: Consolas, &quot;Courier New&quot;, monospace; font-size: 20px; line-height: 27px; white-space: pre">
<div><span style="color: rgba(86, 156, 214, 1)">&lt;?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'=&gt;'张三','mobile'=&gt;12334123];</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// echo $model-&gt;table('user')-&gt;insert($saveData);</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// var_dump($model-&gt;table('user')-&gt;where('id=5')-&gt;delete());</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// var_dump($model-&gt;table('user')-&gt;limit('0,6')-&gt;field('username,mobile')-&gt;where('id&gt;1')-&gt;order('id desc')-&gt;select());</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// $updateData=['username'=&gt;'张三'];</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// var_dump($model-&gt;table('user')-&gt;where('id=3')-&gt;update($updateData));</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// var_dump($model-&gt;table('user')-&gt;max('mobile'));</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// var_dump($model-&gt;table('user')-&gt;getByUserName('张三'));</span></div>
<div><span style="color: rgba(106, 153, 85, 1)">// var_dump($model-&gt;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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<span style="color: rgba(156, 220, 254, 1)">link</span> = <span style="color: rgba(86, 156, 214, 1)">$this</span>-&gt;<span style="color: rgba(220, 220, 170, 1)">connect</span>();</div>
<br>
<div>      <span style="color: rgba(106, 153, 85, 1)">//得到数据表名user===&gt;UserModel</span></div>
<div>      <span style="color: rgba(86, 156, 214, 1)">$this</span>-&gt;<span style="color: rgba(156, 220, 254, 1)">tableName</span> = <span style="color: rgba(86, 156, 214, 1)">$this</span>-&gt;<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>-&gt;<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>-&gt;<span style="color: rgba(156, 220, 254, 1)">host</span>, <span style="color: rgba(86, 156, 214, 1)">$this</span>-&gt;<span style="color: rgba(156, 220, 254, 1)">user</span>, <span style="color: rgba(86, 156, 214, 1)">$this</span>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<span style="color: rgba(156, 220, 254, 1)">prefix</span> . <span style="color: rgba(86, 156, 214, 1)">$this</span>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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> &amp;&amp; <span style="color: rgba(220, 220, 170, 1)">mysqli_affected_rows</span>(<span style="color: rgba(86, 156, 214, 1)">$this</span>-&gt;<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>-&gt;<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>-&gt;<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> &amp;&amp; <span style="color: rgba(220, 220, 170, 1)">mysqli_affected_rows</span>(<span style="color: rgba(86, 156, 214, 1)">$this</span>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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> =&gt; <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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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>-&gt;<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> =&gt; <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>-&gt;<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>)-&gt;<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>-&gt;<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>-&gt;<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>)-&gt;<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]
查看完整版本: php学习之Model类