首先感谢您的帮助,我问如何将数据插入从左侧开始的字段?根据实体,有时最后几个字段留空,但我需要将填充的字段插入表中。如果我尝试这样做,我显然会遇到列值不匹配错误。
谢谢!
答案 0 :(得分:2)
只需指定您当前要插入的字段名称:
INSERT INTO table (field1, field2, field3) VALUES (value1, value2, value3)
或者这样
INSERT INTO table SET field1=value1, field2=value2, field3=value3
无论是左,右还是方格
由于SQL查询只是一个字符串,您可以使用一些PHP代码以您希望的方式构建此字符串。
这里是一个非常简单的辅助函数形式的示例代码,用于动态生成SET语句:
function dbSet($fields) {
$set='';
foreach ($fields as $field) {
if (isset($_POST[$field])) {
$set.="`$field`='".mysql_real_escape_string($_POST[$field])."', ";
}
}
return substr($set, 0, -2);
}
它可以由$fields
数组控制。
像这样使用
//if we have full set of data
$fields = explode(" ","name surname lastname address zip fax phone");
$query = "INSERT INTO $table SET ".dbSet($fields);
//if we have only three fields ready
$fields = explode(" ","name surname lastname");
$query = "INSERT INTO $table SET ".dbSet($fields);
但你迫切需要学习基本的PHP字符串操作才能自己做这些事情 字符串操作在PHP中是最重要的,因为几乎PHP的每个任务都只是像你的情况一样的字符串操作。
答案 1 :(得分:2)
您使用的列数和您尝试插入的值的数量必须匹配。您可以指定要插入的内容,因此您不必传递不需要的列(因此您不需要传递“空白”)。
INSERT INTO Store_Information (store_name, Sales, Date)
VALUES ('Los Angeles', 900, 'Jan-10-1999')
答案 2 :(得分:1)
使用像
这样的查询 insert into table set col1=val1, col2=val2;
或
insert into table(col1, col2) values(val1, val2);
这是绕过它的唯一方法。我认为方法2是最常用的。
如果有任何方法可以为每列提供默认值,请将它们用于没有值的列。
答案 3 :(得分:0)
如果所有数据都可以为“NULL”,则可以使用变量设置查询,如果未设置,则为NULL,例如:
$col1 = null;
$col2 = null;
$col3 = null;
$col4 = null;
$col5 = null;
然后填充您需要的列
$col1 = 'val1';
$col2 = 'val2';
$query = "INSERT INTO (col1, col2, col3, col4, col5) VALUES ($col1, $col2, $col3, $col4)";
真诚地,我永远不会使用这样的东西......但是你要求它......
答案 4 :(得分:0)
mysql_query("INSERT INTO People (First_Name, Last_Name, Age)
VALUES ('Marcus', 'Porter', '28')");
mysql_query("INSERT INTO People (First_Name, Last_Name, Email)
VALUES ('Marcin', 'Kruk', 'marcin.kruk@gmail.com')");