1

お粗末なタイトルで申し訳ありません - 目標を視覚的に表示することをお勧めします。

ユーザーが SomeURL.com/test.php?id=101 にアクセスしたときに、このようなものをページに表示したい

| Questions      | Answers       |
----------------------------------
| 1(a) First Name| Pedro         |
----------------------------------
| 1(b) Surname   | Millers       |
----------------------------------
| 2(a) Weight    | 150lbs        |
----------------------------------

これは、mysql データベースへのクエリによって達成されます。まず:

SELECT * FROM Questionnaire WHERE idQuestionnaire=101;

どちらが返されますか:

| idQuestionnaire | FirstName    | Surname    | Weight    |
-----------------------------------------------------------
| 101             | Pedro        | Millers    | 150lbs    |

私のテーブル設定では、列のコメントが設定されています。つまり、「FirstName」列のコメントは「1(a) First Name」となります。これらのコメントをすべて取得するには、別のクエリを実行できます。

SELECT COLUMN_NAMES FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Questionnaire';

どちらが返されますか:

| COLUMN_COMMENTS |
-------------------
| 1(a) First Name |
-------------------
| 1(b) Surname    |
-------------------
| 2(a) Weight     |
-------------------

ハードコードではなく配列/ループを使用してコードを自動化したい理由は、使用している実際のテーブルには400を超えるフィールドがあり、フィールドが変更または追加される可能性があるため、phpコードを変更し続ける必要がないようにしたいからです.さて、これが起こったとき。それは非常に単純な作業のように思えますが、私の人生では、関連する文書化された解決策を見つけることはできません.

4

3 に答える 3

0

fetch_fields()INFORMATION_SCHEMA でビューを照会するのではなく、結果セットに含まれる列に関する情報を取得するために、結果セットでmysqli 関数を使用することをお勧めします。

fetch_fields()、テーブル内の列のサブセットのみを参照するクエリ、式を返すクエリ、または複数のテーブルから列を返すクエリに対して機能します。

http://php.net/manual/en/mysqli.quickstart.metadata.php

于 2013-08-21T21:19:19.753 に答える
0

これを試して:

(SELECT 
 "1(a) First Name" as Questions,
 Firstname as Answers
FROM Questionnaire WHERE idQuestionnaire=101)
 union
(SELECT 
 "1(b) Surname" as Questions,
  Surname as Answers
FROM Questionnaire WHERE idQuestionnaire=101)
 union
(SELECT 
 "2(a) Weight" as Questions,
 Weight as Answers
FROM Questionnaire WHERE idQuestionnaire=101);
于 2013-08-21T21:25:35.893 に答える