Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅当输入文本不为空时才插入mysql-Codeigniter_Php_Mysql_Codeigniter_Insert - Fatal编程技术网

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

Php 仅当输入文本不为空时才插入mysql-Codeigniter,php,mysql,codeigniter,insert,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';

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

我的模型代码如下

$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行“”附近要使用的正确语法

插入todo(一、二、三)值('val1、val2、val3);'

如果这是您的查询:

INSERT INTO todo(one, two, three) VALUES ('val1, val2, val3);'
那么单引号就有问题了。您可能想要:

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


你能详细说明你想要什么样的产品吗?和输入

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

      /* Do Nothing */

      }

      else {

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

      }

在您的情况下,我将使用以下语法:

INSERT INTO todo
SET
    one='val1',
    two='val2',
    three='val3'
可以更容易地在数组中设置field=value对,并通过内爆添加到语句中

在下面添加示例:

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

我想您需要在运行
$q=$this->db->query之前检查变量是否为空…
我有三个文本输入。。。如果值不是空的,则将其添加到数组中。我只是不知道如何格式化
$query\u dat
数组。如果我只有两个值,我会得到这样的结果:
插入到todo(一,二)值('一,二);'('1,2);'。不客气。当然,在继续执行查询之前,我还会检查$query\u数据是否有任何项。在我提供的示例中不存在,但应该这样做,因为在$query\u数据为空的情况下,这可能是失败的原因。
        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);