Home  >  Article  >  Backend Development  >  In PHP, you can use arrays to generate sql statements to be executed charmingly, array sql_PHP tutorial

In PHP, you can use arrays to generate sql statements to be executed charmingly, array sql_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 09:46:50816browse

In PHP, arrays can be used to generate sql statements to be executed. Array sql

Will you encounter such a situation? Every time the data is obtained, there will be a certain difference between the data and the historical version. However, using ThinkPHP's addAll() function, the existing data will be deleted and rewritten. This is obviously not what we want. But writing sql by myself with dozens of fields every time is also boring. How to achieve automatic generation of sql elegantly and easily? So here is the method below.

/**
   * [array_to_sql 根据数组key和value拼接成需要的sql]
   * @param [type] $array  [key, value结构数组]
   * @param string $type  [sql类型insert,update]
   * @param array $exclude [排除的字段]
   * @return [string]     [返回拼接好的sql]
   */
  function array_to_sql($array, $type='insert', $exclude = array()){
    
    $sql = '';
    if(count($array) > 0){
      foreach ($exclude as $exkey) {
        unset($array[$exkey]);//剔除不要的key
      }

      if('insert' == $type){
        $keys = array_keys($array);
        $values = array_values($array);
        $col = implode("`, `", $keys);
        $val = implode("', '", $values);
        $sql = "(`$col`) values('$val')";
      }else if('update' == $type){
        $tempsql = '';
        $temparr = array();
        foreach ($array as $key => $value) {
          $tempsql = "'$key' = '$value'";
          $temparr[] = $tempsql;
        }

        $sql = implode(",", $temparr);
      }
    }
    return $sql;
  }

Of course, there are still many things to consider about this method. It works, but it's not the best. Garden apes, do you have a better way? Please tell me!

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1030143.htmlTechArticlePHP uses arrays to generate sql statements to be executed charmingly. Will array sql encounter such a situation? What's the situation? Every time you obtain data, there will be a certain difference between the data and the historical version. However, using...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn