1
0
mirror of https://github.com/php/doc-zh.git synced 2026-03-24 07:02:15 +01:00
Files
archived-doc-zh/reference/pgsql/functions/pg-insert.xml
mowangjuanzi 2f25f47ca5 Update pgsql
2024-02-28 00:00:28 +08:00

184 lines
6.0 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 39bb8a868935a56cfce438b0169e13c02c93211c Maintainer: HonestQiao Status: ready -->
<!-- CREDITS: mowangjuanzi -->
<refentry xml:id="function.pg-insert" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>pg_insert</refname>
<refpurpose>
将数组插入到表中
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>PgSql\Result</type><type>string</type><type>bool</type></type><methodname>pg_insert</methodname>
<methodparam><type>PgSql\Connection</type><parameter>connection</parameter></methodparam>
<methodparam><type>string</type><parameter>table_name</parameter></methodparam>
<methodparam><type>array</type><parameter>values</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer><constant>PGSQL_DML_EXEC</constant></initializer></methodparam>
</methodsynopsis>
<para>
<function>pg_insert</function><parameter>values</parameter> 中的值插入到由
<parameter>table_name</parameter> 指定的表中。
</para>
<para>
如果指定 <parameter>flags</parameter>,则 <function>pg_convert</function>
使用指定 flag 应用于 <parameter>values</parameter>
</para>
<para>
默认情况下 <function>pg_insert</function> 传递原始值。值必须转义或必须在 <parameter>flags</parameter>
中指定 <constant>PGSQL_DML_ESCAPE</constant> flag。<constant>PGSQL_DML_ESCAPE</constant>
引用并转义参数/标识符。因此,表/列名称变得区分大小写。
</para>
<para>
注意转义和预处理查询都不能保护 LIKE 查询、JSON、Array、Regex 等,这些参数要根据上下文来处理。即转义/验证值。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>connection</parameter></term>
<listitem>
&pgsql.parameter.connection;
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>table_name</parameter></term>
<listitem>
<para>
要插入记录的表名。表 <parameter>table_name</parameter> 中的列必须至少要有 <literal>values</literal>
中的单元那么多。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>values</parameter></term>
<listitem>
<para>
<type>array</type>,其键是表 <parameter>table_name</parameter> 中的字段名称,其值是要插入的匹配行。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>flags</parameter></term>
<listitem>
<para>
任意数量的 <constant>PGSQL_CONV_OPTS</constant><constant>PGSQL_DML_NO_CONV</constant><constant>PGSQL_DML_ESCAPE</constant><constant>PGSQL_DML_EXEC</constant><constant>PGSQL_DML_ASYNC</constant>
<constant>PGSQL_DML_STRING</constant> 的组合。当 <constant>PGSQL_DML_STRING</constant><parameter>flags</parameter>
的一部分,然后将返回查询字符串。当设置了 <constant>PGSQL_DML_NO_CONV</constant><constant>PGSQL_DML_ESCAPE</constant>
时,不会在内部调用 <function>pg_convert</function>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;如果通过 <parameter>flags</parameter> 传递 <constant>PGSQL_DML_STRING</constant>,成功时返回 &string;
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
当指定的表无效时,会抛出 <classname>ValueError</classname>
</para>
<para>
当字段的值或类型不能正确匹配 PostgreSQL的类型时会抛出 <classname>ValueError</classname><classname>TypeError</classname>
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.3.0</entry>
<entry>
当指定的表无效时,现在会抛出 <classname>ValueError</classname> 错误;之前触发 <constant>E_WARNING</constant>
</entry>
</row>
<row>
<entry>8.3.0</entry>
<entry>
当字段的值或类型不能正确匹配 PostgreSQL 的类型时,现在会抛出 <classname>ValueError</classname>
<classname>TypeError</classname> 错误;之前触发 <constant>E_WARNING</constant>
</entry>
</row>
&pgsql.changelog.return-result-object;
&pgsql.changelog.connection-object;
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>pg_insert</function> 示例</title>
<programlisting role="php">
<![CDATA[
<?php
$dbconn = pg_connect('dbname=foo');
// 在某种程度上安全,因为所有值都转义了。
// 然而 PostgreSQL 支持 JSON/Array。无论是
// 转义还是预处理都不安全。
$res = pg_insert($dbconn, 'post_log', $_POST, PGSQL_DML_ESCAPE);
if ($res) {
echo "POST data is successfully logged\n";
} else {
echo "User must have sent wrong inputs\n";
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>pg_convert</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->