在不知道 SQL 语句的情况下从数据库检索结果集元数据
P粉506963842
P粉506963842 2023-09-04 14:18:17
0
1
444

我正在使用 PHP 和 HTML 并创建了一个数据库。我已连接到数据库。我想知道是否有一种方法可以通过要求用户输入整个 SQL 语句来从数据库中检索数据。我真的很感兴趣如何在不说 $row['id']

的情况下获取数据

为了论证,他们将知道列和 ID 以及有关数据库的所有信息。

我所看到的一切都是,您必须知道正在查询哪些列,然后才能访问数据。

P粉506963842
P粉506963842

全部回复 (1)
P粉674757114

如果您的用户要提供要使用的 SQL 语句,他们必须知道他们想要的表和列的名称。

您可以查询information_schema.COLUMNS表来查找表和列的名称和数据类型。

或者,执行查询后,您可以获得列元数据。对于 PDO,请使用$stmt->getColumMeta($columnNumber);。使用 mysqli 使用->result_metadata()类似这(未调试)。

$stmt = $mysqli->prepare("SELECT what,ever,else FROM table"); $stmt->execute(); $metadata = $stmt->result_metadata(); $column_count = $mysqli->field_count(); $column_names = []; for ($colnum = 0; $colnum < $column_count; $colnum++) { $field = $metadata->fetch_field(); $column_names [] = $field->name; } $metadata->close();

这使用->fetch_field()获取有关结果集中每一列的大量有用信息。

但是让用户向您提供 SQL 语句是一个很大的安全风险。如果您信任用户向您提供 SQL 语句,您还必须相信他们不会破坏或损坏您的数据。如果您的系统向全球互联网开放,您将丢失数据。有时问我怎么知道这一点。

    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!