我试图将一些数据插入表中,但我想只在变量不为空时插入。
我的模型代码如下。
$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);',
答案 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 ('','','')";
}