簡體   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