[英]query for or change column name in php?
我需要找出一種在PHP
為SQL
數據庫准備插入語句的方法,但是我難以理解邏輯。 插入語句將來自我在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
因此,現在我對需要插入的值有了一些參考。 現在將涉及的下一步。
因此,總而言之,如果沒有正確的信息,我無法將答案插入代表問題的正確列中。 我個人認為更改PHP
的列名將是更好的選擇。 但是我對PHP
和SQL
還是很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.