1

データベースの挿入ステートメントを準備する方法を理解する必要がありPHPSQLロジックを理解するのに苦労しています。挿入ステートメントは、 で受信しているデータからのものになりますJSON。にはJSON、質問と回答が含まれています。それらを挿入しているテーブルが問題です。フロント エンド (Web サイト) では、テーブルには質問を表す列名があり、次のように表示されます。

Date | Address | City | Zip

問題は、これらの名前が引き継がれないデータベースにあります。列名は column1 column 2 などです。したがって、次のようになります

Column1 | Column2 | Column3 | Column4

もう1つ-このような各テーブルが作成されると、値が異なるため、関係をハードコーディングできません。また、これらのテーブルは、フロント エンド (Web サイト) から 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 に答える