Philip, Can you please activate Alejandro´s SVN account? He said that many students at his university of computer science are taking advantage of our work and now its time for him to give back.
These are the files he translated so far: /es/reference/pdo/prepared-statements.xml /es/reference/pdo/pdo/lastinsertedid.xml /es/reference/pdo/pdo/prepare.xml /es/reference/pdo/pdo/query.xml /es/reference/pdo/pdo/quote.xml Please find the files attached. Thank you! Yago On Tue, Dec 6, 2011 at 4:44 AM, Alejandro Rodas <alexrd...@gmail.com> wrote: > I would like to have an SVN account to help with the Spanish translation > of the PHP Manual. > > -- Yago Ferrer
<?xml version="1.0" encoding="utf-8"?> <!-- $Revision: $ --> <!-- EN-Revision: 317502 Maintainer: Alejandro Rodas Status: ready --> <!-- Reviewed: no --> <chapter xml:id="pdo.prepared-statements" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Sentencias preparadas y procedimientos almacenados</title> <para> Muchas de las bases de datos más maduras soportan el concepto de sentencias preparadas. Pueden definirse como un tipo de plantillas compiladas para SQL que las aplicaciones desean ejecutar, que pueden ser personalizadas usando parámetros variables. Las sentencias preparadas ofrecen dos grandes beneficios: </para> <itemizedlist> <listitem> <simpara> La consulta sólo necesita ser interpretada (o preparada) una vez, pero puede ser ejecutada en múltiples ocasiones con los mismos o diferentes parámetros. Cuando la consulta es preparada, la base de datos analizará, compilará y optimizará su plan para ejecutar la consulta. Para consultas complejas este proceso puede tomar suficiente tiempo como para que ralentice notablemente una aplicación si se necesita repetir la misma consulta muchas veces con los mismos parámetros. Usando una sentencia preparada la aplicación evita repetir el ciclo de análisis/compilación/optimización. Esto significa que las sentencias preparadas usan menos recursos y se ejecutan más rápidamente. </simpara> </listitem> <listitem> <simpara> Los parámetros para las sentencias preparadas no necesitan estar entrecomillados; el driver automáticamente se encarga de esto. Si una aplicación usa exclusivamente sentencias preparadas, el desarrollador puede estar seguro de que no ocurrirán inyecciones SQL (sin embargo, si otras partes de la consulta se construyen con datos de entrada sin escapar, las inyecciones SQL pueden ocurrir). </simpara> </listitem> </itemizedlist> <para> Las sentencias preparadas son tan útiles que son la única característica que PDO emulará para drivers que no las soporten. Esto asegura que una aplicación será capaz de usar el mismo paradigma de acceso a datos independientemente de las capacidades de la base de datos. </para> <para> <example> <title>Múltiples inserts usando sentencias preparadas</title> <simpara> Este ejemplo realiza dos consulta de tipo INSERT sustituyendo <literal>name</literal> y <literal>value</literal> por los valores equivalentes. </simpara> <programlisting role="php"> <![CDATA[ <?php $stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)"); $stmt->bindParam(':name', $name); $stmt->bindParam(':value', $value); // insertar una fila $name = 'one'; $value = 1; $stmt->execute(); // insertar otra fila con diferentes valores $name = 'two'; $value = 2; $stmt->execute(); ?> ]]> </programlisting> </example> </para> <para> <example> <title>Múltiples inserts usando sentencias preparadas</title> <simpara> Este ejemplo realiza dos consultas de tipo INSERT sustituyendo <literal>name</literal> y <literal>value</literal> por el parámetro de sustitución<literal>?</literal>. </simpara> <programlisting role="php"> <![CDATA[ <?php $stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)"); $stmt->bindParam(1, $name); $stmt->bindParam(2, $value); // insertar una fila $name = 'one'; $value = 1; $stmt->execute(); // insertar otra fila con diferentes valores $name = 'two'; $value = 2; $stmt->execute(); ?> ]]> </programlisting> </example> </para> <para> <example> <title>Buscar datos usando sentencias preparadas</title> <simpara> Este ejemplo busca datos basándose en un valor clave proporcionado por un formulario. Los datos de usuario son automáticamente entrecomillados, con lo cual no hay riesgo de un ataque por inyección SQL. </simpara> <programlisting role="php"> <![CDATA[ <?php $stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?"); if ($stmt->execute(array($_GET['name']))) { while ($row = $stmt->fetch()) { print_r($row); } } ?> ]]> </programlisting> </example> </para> <para> Si el driver de la base de datos lo soporta, una aplicación puede también enlazar parámetros de salida al igual que para entrada. Los parámetros de salida son típicamente usados para recuperar valores de procedimientos almacenados. Los parámetros de salida son ligeramente más complejos de usar que los de entrada, de manera que el desarrollador debe saber cuánto de grande puede ser un parámetro cuando se enlaza. Si el valor resulta ser más grande que el tamaño que se ha supuesto, se eleva un error. </para> <para> <example> <title>Llamar a un procedimiento almacenado con un parámetro de salida</title> <programlisting role="php"> <![CDATA[ <?php $stmt = $dbh->prepare("CALL sp_returns_string(?)"); $stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000); // llamar al procedimiento almacenado $stmt->execute(); print "procedure returned $return_value\n"; ?> ]]> </programlisting> </example> </para> <para> Los desarrolladores pueden también especificar parámetros que contendrán valores tanto de entrada como de salida; la sintaxis es similar a la de los parámetros de salida. En el siguiente ejemplo, la cadena 'hello' es pasada al procedimiento almacenado, y cuando éste finaliza, 'hello' es reemplazada con el valor de retorno del procedimiento. </para> <para> <example> <title>Llamar a un procedimiento almacenado con un parámetro de entrada/salida</title> <programlisting role="php"> <![CDATA[ <?php $stmt = $dbh->prepare("CALL sp_takes_string_returns_string(?)"); $value = 'hello'; $stmt->bindParam(1, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000); // llamar al procedimiento almacenado $stmt->execute(); print "procedure returned $value\n"; ?> ]]> </programlisting> </example> </para> <para> <example> <title>Uso inválido de un parámetro de sustitución</title> <programlisting role="php"> <![CDATA[ <?php $stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE '%?%'"); $stmt->execute(array($_GET['name'])); // los parámetros de sustitución deben ser usados en el lugar del valor completo $stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE ?"); $stmt->execute(array("%$_GET[name]%")); ?> ]]> </programlisting> </example> </para> </chapter> <!-- 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 -->
<?xml version="1.0" encoding="UTF-8"?> <!-- $Revision: $ --> <!-- EN-Revision: 315005 Maintainer: Alejandro Rodas Status: ready --> <!-- Reviewed: no --> <refentry xml:id="pdo.lastinsertid" xmlns="http://docbook.org/ns/docbook"> <refnamediv> <refname>PDO::lastInsertId</refname> <refpurpose> Devuelve el ID de la última fila o secuencia insertada </refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>string</type><methodname>PDO::lastInsertId</methodname> <methodparam choice="opt"><type>string</type><parameter>name</parameter><initializer>&null;</initializer></methodparam> </methodsynopsis> <para> Devuelve el ID de la última fila insertada, o el último valor de una secuencia de objetos, dependiendo del driver subyacente. Por ejemplo, <function>PDO_PGSQL</function> requiere especificar el nombre de la secuencia de objetos para el parámetro <parameter>name</parameter>. </para> <note> <para> Este método puede no devolver resultados significativos o consistentes para diferentes drivers PDO, debido a que la base de datos subyacente puede no soportar el concepto de campos auto-incrementales o secuencias. </para> </note> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>name</parameter></term> <listitem> <para> Name of the sequence object from which the ID should be returned. </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> If a sequence name was not specified for the <parameter>name</parameter> parameter, <function>PDO::lastInsertId</function> returns a string representing the row ID of the last row that was inserted into the database. </para> <para> If a sequence name was specified for the <parameter>name</parameter> parameter, <function>PDO::lastInsertId</function> returns a string representing the last value retrieved from the specified sequence object. </para> <para> If the PDO driver does not support this capability, <function>PDO::lastInsertId</function> triggers an <literal>IM001</literal> SQLSTATE. </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 -->
<?xml version="1.0" encoding="UTF-8"?> <!-- $Revision: $ --> <!-- EN-Revision: 317502 Maintainer: Alejandro Rodas Status: ready --> <!-- Reviewed: no --> <refentry xml:id="pdo.prepare" xmlns="http://docbook.org/ns/docbook"> <refnamediv> <refname>PDO::prepare</refname> <refpurpose> Prepara una sentencia para su ejecución y devuelve un objeto sentencia </refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>PDOStatement</type><methodname>PDO::prepare</methodname> <methodparam><type>string</type><parameter>statement</parameter></methodparam> <methodparam choice="opt"><type>array</type><parameter>driver_options</parameter><initializer>array()</initializer></methodparam> </methodsynopsis> <para> Prepara una sentencia SQL para ser ejecutada por el método <function>PDOStatement::execute</function>. La sentencia SQL puede contener cero o más marcadores de parámetros con nombre (:name) o signos de interrogación (?) por los cuales los valores reales serán sustituidos cuando la sentencia sea ejecutada. No se pueden usar marcadores de parámetros con nombre y signos de interrogación en la misma sentencia SQL; se debe elegir uno de los dos estilos de parámetros. Se deben usar estos parámetros para sustituir cualquier dato de usuario, y no usarlos directamente en la consulta. </para> <para> Se debe incluir un único marcador de parámetro para cada valor que se desee pasar a la sentencia cuando se llame a <function>PDOStatement::execute</function>. No se puede usar más de un marcador de parámetro con el mismo nombre en la misma sentencia. No se puede sustituir múltiples valores en un único parámetro con nombre, por ejemplo, en la cláusula IN() de una sentencia SQL. </para> <para> Llamar a <function>PDO::prepare</function> y a <function>PDOStatement::execute</function> para sentencias que serán ejecutadas en múltiples ocasiones con diferentes parámetros optimiza el rendimiento de la aplicación permitiendo al driver negociar en lado del cliente y/o servidor el almacenamiento en caché del plan de consulta y meta información, y ayuda a prevenir inyecciones SQL eliminando la necesidad de entrecomillar manualmente los parámetros. </para> <para> PDO emulará sentencias preparadas/parámetros de sustitución para drivers que no lo soporten nativamente, y puede reescribir el estilo de los parámetros de sustitución por una forma más apropiada, si el driver soporta un estilo pero no el otro. </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>statement</parameter></term> <listitem> <para> Debe ser una sentencia SQL válida para el servidor de base de datos destino. </para> </listitem> </varlistentry> <varlistentry> <term><parameter>driver_options</parameter></term> <listitem> <para> Este array guarda uno o más pares clave=>valor para establecer el valor de los atributos del objeto PDOStatement que este método devuelve. Comúnmente se establece el valor <literal>PDO::ATTR_CURSOR</literal> a <literal>PDO::CURSOR_SCROLL</literal> para solicitar el cursor desplazable. Algunos drivers tienen opciones específicas que pueden ser establecidas en el momento de la preparación. </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> Si el servidor de la base de datos prepara con éxito la sentencia, <function>PDO::prepare</function> devuelve un objeto <classname>PDOStatement</classname>. Si no es posible, <function>PDO::prepare</function> devuelve &false; o emite una excepción<classname>PDOException</classname> (dependiendo del <link linkend="pdo.error-handling">manejo de errores</link>). </para> <note> <para> Las sentencias preparadas emuladas no se comunican con el servidor de la base de datos con lo cual <function>PDO::prepare</function> no comprueba la sentencia. </para> </note> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example><title>Prepara una sentencia SQL con parámetros de sustitución nombrados</title> <programlisting role="php"> <![CDATA[ <?php /* Ejecuta una sentencia preparada pasando un array de valores */ $sql = 'SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour'; $sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); $sth->execute(array(':calories' => 150, ':colour' => 'red')); $red = $sth->fetchAll(); $sth->execute(array(':calories' => 175, ':colour' => 'yellow')); $yellow = $sth->fetchAll(); ?> ]]> </programlisting> </example> <example> <title>Prepara una sentencia SQL con parámetros de signos de interrogación</title> <programlisting role="php"> <![CDATA[ <?php /* Ejecuta una sentencia preparada pasando un array de valores */ $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?'); $sth->execute(array(150, 'red')); $red = $sth->fetchAll(); $sth->execute(array(175, 'yellow')); $yellow = $sth->fetchAll(); ?> ]]> </programlisting> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>PDO::exec</function></member> <member><function>PDO::query</function></member> <member><function>PDOStatement::execute</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 -->
<?xml version="1.0" encoding="utf-8"?> <!-- $Revision: $ --> <!-- EN-Revision: 297028 Maintainer: Alejandro Rodas Status: ready --> <!-- Reviewed: no --> <refentry xml:id="pdo.query" xmlns="http://docbook.org/ns/docbook"> <refnamediv> <refname>PDO::query</refname> <refpurpose> Ejecuta una sentencia SQL, devolviendo un conjunto de resultados como un objeto PDOStatement </refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>PDOStatement</type><methodname>PDO::query</methodname> <methodparam><type>string</type><parameter>statement</parameter></methodparam> </methodsynopsis> <methodsynopsis> <type>PDOStatement</type><methodname>PDO::query</methodname> <methodparam><type>string</type><parameter>statement</parameter></methodparam> <methodparam><type>int</type><parameter>PDO::FETCH_COLUMN</parameter></methodparam> <methodparam><type>int</type><parameter>colno</parameter></methodparam> </methodsynopsis> <methodsynopsis> <type>PDOStatement</type><methodname>PDO::query</methodname> <methodparam><type>string</type><parameter>statement</parameter></methodparam> <methodparam><type>int</type><parameter>PDO::FETCH_CLASS</parameter></methodparam> <methodparam><type>string</type><parameter>classname</parameter></methodparam> <methodparam><type>array</type><parameter>ctorargs</parameter></methodparam> </methodsynopsis> <methodsynopsis> <type>PDOStatement</type><methodname>PDO::query</methodname> <methodparam><type>string</type><parameter>statement</parameter></methodparam> <methodparam><type>int</type><parameter>PDO::FETCH_INTO</parameter></methodparam> <methodparam><type>object</type><parameter>object</parameter></methodparam> </methodsynopsis> <para> <function>PDO::query</function> ejecuta una sentencia SQL en una única llamada a función, devolviendo el conjunto de resultados (si los hay) que devuelve la sentencia como un objeto PDOStatement. </para> <para> Para una consulta que se necesite ejecutar en múltiples ocasiones, se obtendrá una mejor rendimiento si se prepara un objeto PDOStatement usando <function>PDO::prepare</function> y ejecutando la sentencia con múltiple llamadas a <function>PDOStatement::execute</function>. </para> <para> Si no se buscan todos los datos del conjunto de resultados antes de ejecutar la siguiente llamada a <function>PDO::query</function>, ésta puede fallar. Llamando a <function>PDOStatement::closeCursor</function> se liberan los recursos de la base de datos asociados al objeto PDOStatement antes de ejecutar la siguiente llamada a <function>PDO::query</function>. </para> <note> <para> Aunque esta función está documentada solamente teniendo un único parámetro, se pueden pasar argumentos adicionales a esta función. Éstos serán tratados como si se llamase a <function>PDOStatement::setFetchMode</function> con el objeto de la sentencia resultante. </para> </note> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>statement</parameter></term> <listitem> <para> La sentencia SQL a preparar y ejecutar. </para> <para> Los datos dentro de la consulta deben ser <link linkend="pdo.quote">debidamente escapados</link>. </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> <function>PDO::query</function> devuelve un objeto PDOStatement, o &false; en caso de error. </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title>Demostración de PDO::query</title> <para> Una buena característica de <function>PDO::query</function> es que permite iterar sobre el conjunto de filas devueltos por una ejecución de una sentencia SELECT con éxito. </para> <programlisting role="php"> <![CDATA[ <?php function getFruit($conn) { $sql = 'SELECT name, color, calories FROM fruit ORDER BY name'; foreach ($conn->query($sql) as $row) { print $row['name'] . "\t"; print $row['color'] . "\t"; print $row['calories'] . "\n"; } } ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ apple red 150 banana yellow 250 kiwi brown 75 lemon yellow 25 orange orange 300 pear green 150 watermelon pink 90 ]]> </screen> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>PDO::exec</function></member> <member><function>PDO::prepare</function></member> <member><function>PDOStatement::execute</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 -->
<?xml version="1.0" encoding="utf-8"?> <!-- $Revision: $ --> <!-- EN-Revision: 300101 Maintainer: Alejandro Rodas Status: ready --> <!-- Reviewed: no --> <refentry xml:id="pdo.quote" xmlns="http://docbook.org/ns/docbook"> <refnamediv> <refname>PDO::quote</refname> <refpurpose> Entrecomilla una cadena para usarla en una consulta. </refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <type>string</type><methodname>PDO::quote</methodname> <methodparam><type>string</type><parameter>string</parameter></methodparam> <methodparam choice="opt"><type>int</type><parameter>parameter_type</parameter><initializer>PDO::PARAM_STR</initializer></methodparam> </methodsynopsis> <para> <function>PDO::quote</function> entrecomilla la cadena de entrada (si es necesario) y escapa los caracteres especiales contenidos en la cadena, usando un estilo de entrecomillado apropiado para el driver subyatence. </para> <para> Si se usa esta función para construir sentencias SQL, se recomienda <emphasis>encarecidamente</emphasis> usar <function>PDO::prepare</function> para preparar las sentencias SQL con los parámetros bound en vez de usar <function>PDO::quote</function> para interpolar datos de usuario en la consulta SQL. Las sentencias preparadas con parámetros bound no son sólo más portables, más convenientes, inmunes a inyección SQL, sino que son mucho más rápidos de ejecutar que consultas interpoladas, y tanto en el lado del servidor como del cliente se puede cachear una forma compilada de la consulta. </para> <para> No todos los drivers PDO implementan este método (como ejemplo notable, PDO_ODBC). En su lugar, considerar el uso de sentencias preparadas. </para> </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>string</parameter></term> <listitem> <para> La cadena para ser entrecomillada. </para> </listitem> </varlistentry> <varlistentry> <term><parameter>parameter_type</parameter></term> <listitem> <para> Proporciona una sugerencia del tipo de datos para los drivers que tengan un estilo de entrecomillado alternativos. </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> Devuelve una cadena entrecomillada teóricamente segura para pasar a una sentencia SQL. Devuelve &false; si el criver no soporta el entrecomillado de esta forma. </para> </refsect1> <!-- Use when ERRORS exist <refsect1 role="errors"> &reftitle.errors; <para> When does this function throw E_* level errors, or exceptions? </para> </refsect1> --> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title>Entrecomillar una cadena normal</title> <programlisting role="php"> <![CDATA[ <?php $conn = new PDO('sqlite:/home/lynn/music.sql3'); /* Cadena simple */ $string = 'Nice'; print "Unquoted string: $string\n"; print "Quoted string: " . $conn->quote($string) . "\n"; ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ Unquoted string: Nice Quoted string: 'Nice' ]]> </screen> </example> <example> <title>Entrecomillar una cadena peligrosa</title> <programlisting role="php"> <![CDATA[ <?php $conn = new PDO('sqlite:/home/lynn/music.sql3'); /* Cadena peligrosa */ $string = 'Naughty \' string'; print "Unquoted string: $string\n"; print "Quoted string:" . $conn->quote($string) . "\n"; ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ Unquoted string: Naughty ' string Quoted string: 'Naughty '' string' ]]> </screen> </example> <example> <title>Entrecomillando una cadena compleja</title> <programlisting role="php"> <![CDATA[ <?php $conn = new PDO('sqlite:/home/lynn/music.sql3'); /* Cadena compleja */ $string = "Co'mpl''ex \"st'\"ring"; print "Unquoted string: $string\n"; print "Quoted string: " . $conn->quote($string) . "\n"; ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ Unquoted string: Co'mpl''ex "st'"ring Quoted string: 'Co''mpl''''ex "st''"ring' ]]> </screen> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>PDO::prepare</function></member> <member><function>PDOStatement::execute</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 -->