我从包含tablename,fieldname和fieldvalue的嵌套数组生成一个列表,并带有重复的表名,即
Table1, Field1, Value1
Table1, Field2, Value2
Table1, Field3, Value3
Table2, Field1, Value1
Table3, Field1, Value1
Table3, Field2, Value2
...
其中表和字段的数量因数组而异,我想写一个INSERT来保存mysql表中的值。使用:
生成sqlfunction array2sql($tableName,$key,$element){
if ($element){
$sql="INSERT into $tableName ($key) values ($element);";
}
}
导致:
INSERT into Table1 (Field1) values (Value1);
INSERT into Table1 (Field2) values (Value2);
... etc.
有没有更好的方法来创建insert语句?
澄清生成变量的数组:
数组是嵌套的,用于设置表名的数组名称与此类似:
Table1[(Field1=>Value1,Field2=>Value2, Field3=>Value3),
[Table2(Field1=>Value1),
[Table3(Field1=>Value1)]
]
]
首先解析嵌套数组,丢弃任何以[0]为键的子数组。
答案 0 :(得分:0)
或者像这样的数组
$tab = array(
array('table1','champ1','valeur1'),
array('table1','champ2','valeur2'),
array('table2','champ1','valeur1'),
array('table2','champ2','valeur2'),
array('table2','champ3','valeur3')
);
然后:
function array2sql($tab){
$sql = '';
$fields = '';
$values = '';
$extable = $tab[0][0];
foreach( $tab as $line ) {
if ($extable == $line[0]) {
$fields .= $line[1].',';
$values .= $line[2].',';
} else {
$sql .= 'INSERT INTO ' . $extable . ' (' . rtrim($fields, ',') . ') VALUES (' . rtrim($values, ',') . ');';
$fields = '';
$values = '';
$extable = $line[0];
}
}
$sql .= 'INSERT INTO ' . $extable . ' (' . rtrim($fields, ',') . ') VALUES (' . rtrim($values, ',') . ');';
return $sql;
}