在不知道 SQL 語句的情況下從資料庫檢索結果集元數據
P粉506963842
P粉506963842 2023-09-04 14:18:17
0
1
534
<p>我正在使用 PHP 和 HTML 並建立了一個資料庫。我已連接到資料庫。我想知道是否有一種方法可以透過要求使用者輸入整個 SQL 語句來從資料庫中檢索資料。我真的很感興趣如何在不說 $row['id']</p> 的情況下獲取數據 <p>為了論證,他們將知道列和 ID 以及有關資料庫的所有資訊。 </p> <p>我所看到的一切都是,您必須知道正在查詢哪些列,然後才能存取資料。 </p>
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 語句,您還必須相信他們不會破壞或損壞您的資料。如果您的系統向全球互聯網開放,您將丟失資料。有時問我怎麼知道這一點。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板