PHP 8.3.0 RC 6 available for testing

pg_delete

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

pg_delete 删除记录

说明

pg_delete(
    PgSql\Connection $connection,
    string $table_name,
    array $conditions,
    int $flags = PGSQL_DML_EXEC
): string|bool

pg_delete()conditions 中的键和值指定的表中删除记录。

如果指定 flags,则 pg_convert() 应用于具有指定 flag 的 conditions

默认 pg_delete() 传递原始值。值必须转义或者 flags 必须指定 PGSQL_DML_ESCAPE flag。PGSQL_DML_ESCAPE 引用并转义参数/标识符。因此,table/column 名称变为区分大小写。

注意转义和预处理查询都不能保护 LIKE 查询、JSON、Array、Regex 等,这些参数要根据上下文来处理。即转义/验证值。

参数

connection

PgSql\Connection 实例。

table_name

要从中删除行的表名。

conditions

array,其键为表 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,则返回 string

更新日志

版本 说明
8.1.0 现在 connection 参数接受 PgSql\Connection 实例,之前接受 resource

示例

示例 #1 pg_delete() 示例

<?php
$db
= pg_connect('dbname=foo');
// 因为转义了所有的值,所以在某种程度上是安全的。
// 然而 PostgreSQL 支持
// JSON/Array。无论是转义还是预处理都不安全。
$res = pg_delete($db, 'post_log', $_POST, PG_DML_ESCAPE);
if (
$res) {
echo
"POST data is deleted: $res\n";
} else {
echo
"User must have sent wrong inputs\n";
}
?>

参见

  • pg_convert() - 将关联的数组值转换为适合 SQL 语句的格式

add a note

User Contributed Notes 1 note

up
-4
Anonymous
19 years ago
One should take care when checking the return value.
0 == false which is not equal with failed delete.

if(!$res)
echo "Nothing was deleted";
To Top