在不知道 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 语句,您还必须相信他们不会破坏或损坏您的数据。如果您的系统向全球互联网开放,您将丢失数据。有时问我怎么知道这一点。