1

我需要想办法为数据库准备一个插入语句,PHPSQL我无法理解逻辑。插入语句将来自我收到的数据JSONJSON包含问题和答案。我将它们插入的表是问题所在。在前端(网站)上,表格有代表问题的列名,看起来像这样。

Date | Address | City | Zip

现在的问题是在数据库中这些名称不会延续。列名只是 column1 column 2 等。所以它看起来像这样

Column1 | Column2 | Column3 | Column4

另一件事 - 当每个像这样的表被创建时,它会有不同的值,所以我不能硬编码关系。此外,这些表是通过从前端(网站)导入 excel 电子表格创建的。所以我想出了一个计划来复制电子表格的第 1 行和第 2 行,这样现在当你导入它们时,数据库看起来像这样

id | Column1 | Column2 | Column3 | Column4
 1 |   Date  | Address |   City  |   Zip

所以现在我对需要插入的值有一些参考。现在所涉及的下一步将是。

  1. 根据第 1 行的数据查询列名将列名更改为第 1 行的数据。
  2. 根据查询将数据插入正确的列

因此,总而言之,如果没有正确的信息,我无法将答案插入代表问题的正确列中。我个人认为更改列名PHP会是更好的选择。但是我很新PHPSQL所以我什至不知道这是否可能。任何帮助表示赞赏

编辑

为了更好地理解PHP我当前发布的问题。

$json = safe($_POST['assessment']);
/*
$json = 
'{
  "info":
  [
    "Date: 6-22-13",
    "Phone #: (555) 555-5555",
    "Address: 304 N. SCOTTSDALE RD.",
    "City: SCOTTSDALE",
    "Zip: 85251",
    "State: AZ"        
   ]
}';
*/
$data = json_decode($json,true);
$collection = array();

foreach($data['info'] as $piece) {
   $info = explode(':', $piece);
   $collection[] = array('question' => $info[0], 'answer' => $info[1]); 
}
echo '<pre>'; print_r($collection); echo '</pre>'
4

1 回答 1

1

下面应该创建一个关联数组,将列名映射到数据库模式中的列号:

$stmt = $db->prepare('select Column1, Column2, Column3, ... from table where id = 1');
$result = $stmt->execute();
$data = $result->fetch(PDO::FETCH_ASSOC);
$col_map = array_flip($data);

然后,您可以在准备未来的数据库查询时使用它。

如果你不知道你可以有多少列,你可以这样做:

$stmt = $db->prepare('select * from table where id = 1');
$result = $stmt->execute();
$data = $result->fetch(PDO::FETCH_ASSOC);
unset($data['id']); // Remove the `id` column, which doesn't conform to the ColumnN pattern
$col_map = array_flip($data);
于 2013-06-22T18:28:03.147 回答