繁体   English   中英

查询或更改PHP中的列名?

[英]query for or change column name in php?

我需要找出一种在PHPSQL数据库准备插入语句的方法,但是我难以理解逻辑。 插入语句将来自我在JSON接收的数据。 JSON包含问题和答案。 我将它们插入的表就是问题。 在前端(网站)上,表格具有代表问题的列名,看起来像这样。

Date | Address | City | Zip

现在问题出在数据库中,这些名称不能保留。 列名称只是column1列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 ,所以我什至不知道这样做是否可行。 任何帮助表示赞赏

编辑

为了更好地理解这个问题,我发布了我目前拥有的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>'

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

$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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM