在不知道 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 語句,您還必須相信他們不會破壞或損壞您的資料。如果您的系統向全球互聯網開放,您將丟失資料。有時問我怎麼知道這一點。