SQL ステートメントを知らなくてもデータベースから結果セットのメタデータを取得する
P粉506963842
2023-09-04 14:18:17
<p>PHP と HTML を使用してデータベースを作成しました。データベースに接続しています。ユーザーに SQL ステートメント全体を入力するように依頼して、データベースからデータを取得する方法があるかどうか疑問に思っています。 $row['id']</p> を言わずにデータを取得する方法に非常に興味があります。
<p>議論のために、彼らは列と ID、そしてデータベースに関するすべてを知っているでしょう。 </p>
<p>私がこれまでに見たことは、データにアクセスする前にどの列がクエリされているかを知る必要があるということです。 </p>
ユーザーが使用する SQL ステートメントを提供する場合、必要なテーブルと列の名前を知っている必要があります。
information_schema.COLUMNS
または、クエリの実行後に列のメタデータを取得できます。 PDO の場合は、テーブルをクエリして、テーブル、列の名前、およびデータ型を見つけることができます。
$stmt->getColumMeta($columnNumber); を使用します。 mysqli を使用する場合は、次のように ->result_metadata() を使用します (デバッグはしません)。 リーリー
これは->fetch_field() を使用して、結果セット内の各列に関する多くの有用な情報を取得します。
しかし、ユーザーに SQL ステートメントの提供を求めることは、大きなセキュリティ リスクになります。ユーザーが SQL ステートメントを提供することを信頼する場合は、ユーザーがデータを破損したり破損したりしないことも信頼する必要があります。システムがグローバル インターネットに公開されている場合、データが失われます。時々、どうしてそんなことを知っているのかと尋ねられることがあります。