【问题标题】:INSERT INTO mysql only if input text is not empty - Codeigniter仅当输入文本不为空时才插入到 mysql - Codeigniter
【发布时间】:2014-03-18 01:10:21
【问题描述】:

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

下面是我的型号代码。

$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);',

【问题讨论】:

  • 我认为你需要在运行$q = $this->db->query....之前检查变量是否为空
  • 我有三个文本输入......如果它们不为空,则将值添加到数组中。我只是不知道如何格式化$query_dat 数组。如果我只有两个值,我会得到这个:INSERT INTO todo (one, two) VALUES ('one, two);', 问题就在这里:('one, two);',

标签: php mysql codeigniter insert


【解决方案1】:

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

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

您可以更轻松地在数组中设置字段=值对,并通过内爆添加到语句中。

在下面添加了示例:

        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); 

【讨论】:

  • 不客气。当然,在继续执行查询之前,我还会检查 $query_data 是否有任何项目。我提供的示例中不存在,但应该这样做,因为如果 $query_data 为空,这可能是失败的原因。
【解决方案2】:

如果这是您的查询:

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);

【讨论】:

    【解决方案3】:

    您能否详细说明您想要的输出内容?然后输入?

          if(empty($one_input) || empty($two_input) || empty($three_input)){
    
          /* Do Nothing */
    
          }
    
          else {
    
          query str="INSERT INTO todo('','','') VALUES ('','','')";
    
          }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-08
      • 2013-04-28
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多