PHP Conference Japan 2024

pg_put_line

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

pg_put_line将以 NULL 结尾的字符串发送到 PostgreSQL 后端

描述

pg_put_line(PgSql\Connection $connection = ?, string $data): bool

pg_put_line() 将以 NULL 结尾的字符串发送到 PostgreSQL 后端服务器。这需要与 PostgreSQL 的 COPY FROM 命令结合使用。

COPY 是 PostgreSQL 支持的高速数据加载接口。数据在未经解析的情况下以单个事务传递。

使用原始 pg_put_line() 命令的替代方法是使用 pg_copy_from()。这是一个更简单的接口。

注意:

应用程序必须在最后一行显式发送两个字符“\.”,以指示后端已完成发送数据,然后发出 pg_end_copy()

警告

使用 pg_put_line() 会导致大多数大型对象操作(包括 pg_lo_read()pg_lo_tell())随后失败。您可以改用 pg_copy_from()pg_copy_to()

参数

connection

一个 PgSql\Connection 实例。当 connection 未指定时,将使用默认连接。默认连接是 pg_connect()pg_pconnect() 最后建立的连接。

警告

从 PHP 8.1.0 开始,使用默认连接已弃用。

data

要直接发送到 PostgreSQL 后端的一行文本。NULL 终止符会自动添加。

返回值

成功时返回 true,失败时返回 false

变更日志

版本 描述
8.1.0 connection 参数现在期望一个 PgSql\Connection 实例;以前,期望一个 resource

示例

示例 #1 pg_put_line() 示例

<?php
$conn
= pg_pconnect("dbname=foo");
pg_query($conn, "create table bar (a int4, b char(16), d float8)");
pg_query($conn, "copy bar from stdin");
pg_put_line($conn, "3\thello world\t4.5\n");
pg_put_line($conn, "4\tgoodbye world\t7.11\n");
pg_put_line($conn, "\\.\n");
pg_end_copy($conn);
?>

参见

添加注释

用户贡献的注释 2 条注释

2
kurt at nospam dot milliganshome dot net
19 年前
如果您遇到来自 postgres 的臭名昭著的“必须是超级用户才能向文件或从文件复制”错误,则需要此函数。
0
smcbride at msn dot com
4 年前
使用此函数时,请勿被使用“literal\tanotherliteral\n”问题困扰,因为使用了单引号与双引号。“literal\tanotherliteral\n”并不相同。许多函数都会受到双引号如何处理转义字符与单引号不同的影响。我总是忘记这一点。
To Top