从JSON对象解码我想通过PHP向MySQL插入一个关联数组。
我发现了几个例子 https://www.daniweb.com/web-development/php/threads/381669/json-to-mysql-with-php 处理这样的一次性导入 - 也使用未知密钥。
但是在我的情况下,我需要一次又一次地插入(从这个关联数组)到同一个表(不先删除并重新创建这个表),并且可能会在数组中随时出现新的键,这些键也需要反映出来作为MySQL表中的新列(全部定义为“varchar(255)”)。
所以基本上在插入之前,需要检查现有列,并在需要时补充新列。
我现在搜索了一段时间,但没有发现任何人之前做过同样的事情,只是不相信我是第一个需要这个的人。 : - )
有没有人知道这个巧合的例子?
提前致谢!
答案 0 :(得分:3)
应该有一个information_schema数据库,其中包含该表中每个字段的表名,字段名和序号位置。
您可以按如下方式查询此数据库:
$sql = "select column_name, data_type from information_schema.columns
where table_name = '$table_name' ORDER BY ordinal_position";
注意:我还查询data_type,因为它在这些操作中很有用。
将此信息保存到数组中。 (这是你的主人)
在遍历master(内部循环)中的每个元素时迭代关联数组(外部循环)。你内心没有找到的任何你内心的钥匙都会被添加到表格中。
向表中添加任何新列(有大量示例sql statements for adding columns)。
重新查询#1以获得新的主人。
接下来,在遍历原始关联数组(内部循环)的同时迭代主(外部循环)。当字段名称匹配时,将字段名称和值添加到新数组中(您还可以使用两个字符串:$ fields和$ values)。
新数组(或多个字符串)现在将以正确的顺序包含所有字段/值,您可以使用它来构建插入SQL语句。
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
答案 1 :(得分:0)
将数据从关联数组插入MySQl请按照以下步骤操作。
第1步: 删除那些不是表格列的元素。例如,从POST数组中删除提交按钮值。
unset($_POST['submit']);
如果要将任何其他列的值添加到表中,可以将其添加到数组中。如果要保存客户端IP地址,请使用
$_POST['customer_ip'] = $_SERVER['REMOTE_ADDR'];
第2步:
$query = "INSERT INTO table_name SET ";
foreach($_POST as $column => $column_value) {
$query .= $column." = '".$column_value."'";
}
$查询内容以执行所需的SQL查询。
mysqli_query($query);