仅当输入文本不为空时才插入到mysql中 - Codeigniter

时间:2014-03-18 01:10:21

标签: php mysql codeigniter insert

我试图将一些数据插入表中,但我想只在变量不为空时插入。

我的模型代码如下。

$query_str = "INSERT INTO todo (";

     $query_and=array();

          if( !empty($one_input)){
              $query_and[]= 'one';
          }
          if( !empty($two_input)){
              $query_and[]=  'two';
          }
          if( !empty($three_input)){
               $query_and[]=  'three';
           }
        $query_str .= implode(', ', $query_and);
        $query_str .= ') VALUES (?, ?, ?)';

        $query_data=array();

            if( !empty($one_input)){ 
                $query_data[]= $one_input;
            }
            if( !empty($two_input)){ 
                $query_data[]= $two_input;
            }
            if( !empty($three_input)){ 
                $query_data[]= $three_input;
            }
         $query_dat = implode(', ', $query_data);
         $query_dat .= ");";

    $q = $this->db->query($query_str, $query_dat);

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的''附近使用正确的语法

INSERT INTO todo(一,二,三)VALUES('val1,val2,val3);',

3 个答案:

答案 0 :(得分:1)

我会在你的情况下使用以下语法:

INSERT INTO todo
SET
    one='val1',
    two='val2',
    three='val3'

您可以更轻松地在数组中设置field = value对,并通过imploding添加到语句中。

在下面添加了示例:

        if( !empty($one_input)){ 
            $query_data[]= "one='$one_input'";
        }
        if( !empty($two_input)){ 
            $query_data[]= "two='$two_input'";
        }
        if( !empty($three_input)){
            $query_data[]= "three='$three_input'";
        }

        $query = "INSERT INTO todo SET " . implode(",", $query_data); 

答案 1 :(得分:0)

如果这是您的查询:

INSERT INTO todo(one, two, three) VALUES ('val1, val2, val3);'

然后你有单引号的问题。你可能想要:

INSERT INTO todo(one, two, three) VALUES ('val1', 'val2', 'val3');

INSERT INTO todo(one, two, three) VALUES (val1, val2, val3);

答案 2 :(得分:0)

您能否详细说明您对输出的要求?并输入?

      if(empty($one_input) || empty($two_input) || empty($three_input)){

      /* Do Nothing */

      }

      else {

      query str="INSERT INTO todo('','','') VALUES ('','','')";

      }