我正在从包含表名,字段名和字段值的嵌套数组中生成一个列表,并重复表名,即
Table1, Field1, Value1
Table1, Field2, Value2
Table1, Field3, Value3
Table2, Field1, Value1
Table3, Field1, Value1
Table3, Field2, Value2
...
在表和字段的数量因数组而异的地方,我想编写一个INSERT来将值持久保存在mysql表中。为了生成我正在使用的sql:
function 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.
有没有更好的方法来创建插入语句?
对生成变量的数组的说明:
数组是嵌套的,用于设置表名的数组名称与此类似:
Table1[(Field1=>Value1,Field2=>Value2, Field3=>Value3),
[Table2(Field1=>Value1),
[Table3(Field1=>Value1)]
]
]
首先解析嵌套数组,并丢弃所有以[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;
}
关于php - 从三个变量创建插入语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37039266/