首頁 >後端開發 >php教程 >PDO 參數可以用於 SQL 查詢中的表名或列名嗎?

PDO 參數可以用於 SQL 查詢中的表名或列名嗎?

Linda Hamilton
Linda Hamilton原創
2024-12-25 03:20:21823瀏覽

Can PDO Parameters Be Used for Table or Column Names in SQL Queries?

PDO 參數:它們可以接受表名或列名作為輸入嗎?

嘗試將表名作為參數包含在準備好的PDO 中語句,如下面的程式碼片段所示,將導致failure:

$stmt = $dbh->prepare('SELECT * FROM :table WHERE 1');
if ($stmt->execute(array(':table' => 'users'))) {
    var_dump($stmt->fetchAll());
}

為什麼這不可能?

PDO 參數適用於在查詢執行期間動態分配的資料值。另一方面,表格和列名稱是資料庫模式的靜態元素,不適合參數化。

包含表名稱的安全替代方案

安全插入將表名放入 SQL 查詢中,建議手動過濾和清理資料。這可以透過將白名單switch() 語句合併到動態執行查詢的函數中來實現:

function buildQuery( $get_var )
{
    switch($get_var)
    {
        case 1:
            $tbl = 'users';
            break;
    }

    $sql = "SELECT * FROM $tbl";
}

透過設定特定情況並處理任何無效場景,查詢將僅在允許的情況下執行表名。這種方法可確保使用者輸入不會直接影響 SQL 查詢,從而保持資料完整性。

以上是PDO 參數可以用於 SQL 查詢中的表名或列名嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn