Rufen Sie Ergebnissatz-Metadaten aus der Datenbank ab, ohne die SQL-Anweisung zu kennen
P粉506963842
2023-09-04 14:18:17
<p>Ich verwende PHP und HTML und habe eine Datenbank erstellt. Ich bin mit der Datenbank verbunden. Ich frage mich, ob es eine Möglichkeit gibt, Daten aus einer Datenbank abzurufen, indem man den Benutzer auffordert, die gesamte SQL-Anweisung einzugeben. Ich bin wirklich daran interessiert, wie ich an die Daten komme, ohne $row['id']</p> zu sagen.
<p>Der Argumentation halber: Sie kennen die Spalten und IDs und alles über die Datenbank. </p>
<p>Alles, was ich gesehen habe, ist, dass Sie wissen müssen, welche Spalten abgefragt werden, bevor Sie auf die Daten zugreifen können. </p>
如果您的用户要提供要使用的 SQL 语句,他们必须知道他们想要的表和列的名称。
您可以查询
information_schema.COLUMNS
表来查找表和列的名称和数据类型。或者,执行查询后,您可以获得列元数据。对于 PDO,请使用 $stmt->getColumMeta($columnNumber);。使用 mysqli 使用 ->result_metadata() 类似这(未调试)。
这使用->fetch_field()获取有关结果集中每一列的大量有用信息。
但是让用户向您提供 SQL 语句是一个很大的安全风险。如果您信任用户向您提供 SQL 语句,您还必须相信他们不会破坏或损坏您的数据。如果您的系统向全球互联网开放,您将丢失数据。有时问我怎么知道这一点。