(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
pg_select — 选择记录
$connection
,$table_name
,$conditions
,$flags
= PGSQL_DML_EXEC
,$mode
= PGSQL_ASSOC
pg_select() 根据 conditions
数组中的 field=>value
值来选择记录。成功的查询返回和 conditions
指定的条件相匹配的包括记录和字段的数组。
如果指定 flags
,pg_convert() 会按照指定 flag 作用于 conditions
上。
默认情况下 pg_select() 传递原始值。值必须转义或指定 PGSQL_DML_ESCAPE。PGSQL_DML_ESCAPE 引用并转义参数/标识符。因此,表/列名称变得区分大小写。
注意转义和预处理查询都不能保护 LIKE 查询、JSON、Array、Regex 等,这些参数要根据上下文来处理。即转义/验证值。
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()。
成功时,如果通过 flags
传递 PGSQL_DML_STRING
,返回 string,否则返回 array, 或者在失败时返回 false
。
示例 #1 pg_select() 示例
<?php
$db = pg_connect('dbname=foo');
// 在某种程度上安全,因为所有值都转义了。
// 然而 PostgreSQL 支持 JSON/Array。无论是
// 转义还是预处理都不安全。
$rec = pg_select($db, 'post_log', $_POST, PG_DML_ESCAPE);
if ($rec) {
echo "Records selected\n";
var_dump($rec);
} else {
echo "User must have sent wrong inputs\n";
}
?>