2024 年日本 PHP 研討會

pg_delete

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

pg_delete 刪除記錄

說明

pg_delete(
    PgSql\Connection $connection,
    字串 $table_name,
    陣列 $conditions,
    int $flags = PGSQL_DML_EXEC
): string|bool

pg_delete() 會從由 conditions 中的鍵和值指定的表格中刪除記錄。

如果指定了 flagspg_convert() 會使用指定的旗標套用至 conditions

預設情況下,pg_delete() 會傳遞原始值。值必須經過跳脫處理,或者必須在 flags 中指定 PGSQL_DML_ESCAPE 旗標。PGSQL_DML_ESCAPE 會將參數/識別符號加上引號並進行跳脫處理。因此,表格/欄位名稱會區分大小寫。

請注意,跳脫處理和預備查詢都不能保護 LIKE 查詢、JSON、陣列、正規表達式等。這些參數應根據其上下文進行處理,例如,跳脫/驗證值。

參數

connection

一個 PgSql\Connection 實例。

table_name

要刪除列的表格名稱。

conditions

一個 陣列,其鍵是表格 table_name 中的欄位名稱,其值是要刪除的這些欄位的值。

flags

可以組合任意數量的 PGSQL_CONV_FORCE_NULLPGSQL_DML_NO_CONVPGSQL_DML_ESCAPEPGSQL_DML_EXECPGSQL_DML_ASYNCPGSQL_DML_STRING。如果 PGSQL_DML_STRINGflags 的一部分,則會返回查詢字串。當設定 PGSQL_DML_NO_CONVPGSQL_DML_ESCAPE 時,它不會在內部呼叫 pg_convert()

返回值

成功時返回 true,失敗時返回 false。如果透過 flags 傳遞 PGSQL_DML_STRING,則返回 字串

更新日誌

版本 說明
8.1.0 connection 參數現在需要一個 PgSql\Connection 實例;以前,需要一個資源

範例

範例 #1 pg_delete() 範例

<?php
$db
= pg_connect('dbname=foo');
// 這種做法有一定的安全性,因為所有值都會被跳脫。
// 然而,PostgreSQL 支援 JSON/陣列。這些類型
// 無論使用跳脫字元還是預備查詢都不安全。
$res = pg_delete($db, 'post_log', $_POST, PG_DML_ESCAPE);
if (
$res) {
echo
"POST 資料已刪除: $res\n";
} else {
echo
"使用者可能輸入了錯誤的資料\n";
}
?>

另請參閱

  • pg_convert() - 將關聯式陣列值轉換成適合 SQL 陳述式的形式

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top