(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
pg_delete — 刪除記錄
$connection,$table_name,$conditions,$flags = PGSQL_DML_EXEC
pg_delete() 會從由 conditions 中的鍵和值指定的表格中刪除記錄。
如果指定了 flags,pg_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_NULL、PGSQL_DML_NO_CONV、PGSQL_DML_ESCAPE、PGSQL_DML_EXEC、PGSQL_DML_ASYNC 或 PGSQL_DML_STRING。如果 PGSQL_DML_STRING 是 flags 的一部分,則會返回查詢字串。當設定 PGSQL_DML_NO_CONV 或 PGSQL_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";
}
?>