在检查返回值时应该小心。
0 == false,它与删除失败不相同。
if(!$res)
echo "Nothing was deleted";
(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
一个 array,其键是表 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
,则返回 string。
版本 | 描述 |
---|---|
8.1.0 | connection 参数现在需要一个 PgSql\Connection 实例;以前需要一个 resource。 |
范例 #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";
}
?>