我有一个名为$ columns的数组:
array(3) {
[0]=>
string(8) "Food"
[1]=>
string(6) "Calories"
[2]=>
string(3) "Carbs"
}
array(3) {
[0]=>
string(8) "Food"
[1]=>
string(6) "Calories"
}
另一个名为
的值array(5) {
[0]=>
string(4) "'Fish'"
[1]=>
string(7) "'100'"
[2]=>
string(13) "'0'"
}
array(6) {
[0]=>
string(4) "'Tatoe'"
[1]=>
string(7) "'100'"
}
我的数据库中有列表示数组所有可能的列。根据项目,数组可能有5,6个或更少的列。
我有这个代码,假设在这个意义上生成sql语句:
INSERT INTO MEALS(该数组中的列)VALUES(值数组中的值)
以下是代码:
for($i = 0; $i < count($column); $i++)
{
echo("INSERT INTO 'MEALS` ($column[$i]) VALUES ($values[$i])\n");
}
问题在于每个“MEAL”:
n(每列)将生成sql查询的数量。
因此:
INSERT INTO `MEALS` (Food) VALUES ('Fish')
INSERT INTO `MEALS` (Calory) VALUES ('100')
INSERT INTO `MEALS` (Carbs) VALUES ('0')
而不是全部在同一个查询上。
INSERT INTO MEALS
(食物,卡路里,碳水化合物)价值观('鱼','100','0')
因此,如果我在数据库中插入,将创建3行。
我知道我错过了逻辑,感谢任何帮助
答案 0 :(得分:0)
为什么不在数组循环中生成查询的两个部分(insert中的列为1个,值为1个变量)?
完成循环后,只需连接字符串:
$ query =“INSERT INTO'MEALS'(”。$ var_column_list。“)VALUES(”。$ var_values_list。“)”;
答案 1 :(得分:0)
$query = "insert into table(".join($colomn,','). ") values (\"".join($values,'","')."\")";
根据您的需要尝试使用上述变体
答案 2 :(得分:0)
试试这个......
$colums = implode(',', $array_of_colums);
$values = implode(',', $array_of_values);
$query = "INSERT INTO `tableName` (".$colums.") VALUES(".$values.") ";