<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/pdo.drivers.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'ref.pdo-mysql.php',
    1 => 'Controlador PDO MySQL',
    2 => 'Funciones del controlador PDO MySQL (PDO_MYSQL)',
  ),
  'up' => 
  array (
    0 => 'pdo.drivers.php',
    1 => 'Controladores PDO',
  ),
  'prev' => 
  array (
    0 => 'ref.pdo-informix.connection.php',
    1 => 'PDO_INFORMIX DSN',
  ),
  'next' => 
  array (
    0 => 'ref.pdo-mysql.connection.php',
    1 => 'PDO_MYSQL DSN',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/pdo_mysql/reference.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/ref.pdo-mysql.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="ref.pdo-mysql" class="reference">
  
  <h1 class="title">Funciones del controlador PDO MySQL (PDO_MYSQL)</h1>
  
  <div class="partintro">

   <div class="section" id="ref.pdo-mysql.intro">
   <h2 class="title">Introducción</h2>
    <p class="para">
     PDO_MYSQL es un controlador que implementa la <a href="book.pdo.php#intro.pdo" class="link">PHP
     Data Objects (PDO)</a>
     para permitir el acceso de PHP a las bases de datos MySQL.
    </p>
    <p class="para">
     PDO_MYSQL utiliza consultas preparadas emuladas por omisión.
    </p>

    <p class="para">
     <strong>MySQL 8</strong>
    </p>

    <p class="para">
     Si PHP se utiliza en una versión 7.1 anterior a la versión 7.1.16, o PHP 7.2 anterior a 7.2.4,
     el complemento de contraseña debe establecerse en
     <em>mysql_native_password</em> para MySQL 8 Server, ya que de lo contrario pueden aparecer
     errores similares a <em>The server requested authentication method
     unknown to the client [caching_sha2_password]</em>,
     incluso si <em>caching_sha2_password</em> no se utiliza.
    </p>
    <p class="para">
     Esto se debe a que MySQL 8 utiliza por omisión caching_sha2_password,
     un complemento que no es reconocido por las versiones antiguas de PHP (mysqlnd).
     En su lugar, debe modificarse el parámetro
     <code class="literal">default_authentication_plugin=mysql_native_password</code> en
     <var class="filename">my.cnf</var>. El complemento <em>caching_sha2_password</em>
     es completamente soportado a partir de PHP 7.4.4. Para versiones anteriores,
     la extensión <a href="book.mysql-xdevapi.php" class="link">mysql_xdevapi</a> lo soporta.
    </p>

    <div class="warning"><strong class="warning">Advertencia</strong>
     <p class="para">
      Tenga en cuenta: ciertos tipos de tablas MySQL (motor de registro)
      no soportan transacciones. Cuando se escribe código de base de datos
      transaccional utilizando un tipo de tabla que no soporta transacciones,
      MySQL afirmará que una transacción fue iniciada correctamente. Además,
      cualquier consulta DLL publicada enviará implícitamente todas las transacciones pendientes.
     </p>
    </div>

    <blockquote class="note"><p><strong class="note">Nota</strong>: 
     <p class="para">
      El controlador MySQL no soporta adecuadamente <strong><code><a href="pdo.constants.php#pdo.constants.param-input-output">PDO::PARAM_INPUT_OUTPUT</a></code></strong>
      a través de <span class="methodname"><a href="pdostatement.bindparam.php" class="methodname">PDOStatement::bindParam()</a></span>; aunque tales
      parámetros pueden ser utilizados, no serán actualizados
      (es decir, la salida actual es ignorada).
     </p>
    </p></blockquote>
   </div>
   


<div class="section" id="ref.pdo-mysql.installation">
 <h2 class="title">Instalación</h2>
 <p class="para">
  Las distribuciones Linux incluyen versiones binarias de PHP que pueden
  ser instaladas. Incluso si estos binarios son construidos con las extensiones
  MySQL, las bibliotecas clientes deben ser a menudo instaladas mediante un paquete adicional. Verifique si es el caso para su distribución.
 </p>

 <p class="para">
  Por ejemplo, en Ubuntu el paquete <code class="literal">php5-mysql</code> instala las
  extensiones PHP ext/mysql, ext/mysqli, y pdo_mysql. En CentOS, el paquete
  <code class="literal">php-mysql</code> también instala estas tres extensiones PHP.
 </p>

 <p class="para">
  Alternativamente, puede compilar esta extensión usted mismo. Construir
  PHP desde las fuentes permite especificar las extensiones MySQL a incluir,
  así como las bibliotecas clientes de cada extensión.
 </p>

 <p class="para">
  Durante la compilación utilice <strong class="option configure">--with-pdo-mysql[=DIR]</strong>
  para instalar la extensión PDO MySQL, donde <code class="literal">[=DIR]</code> es la ruta
  de la biblioteca base de MySQL.
  <a href="book.mysqlnd.php" class="link">Mysqlnd</a> y la biblioteca por defecto.
  Para más detalles sobre la elección de la biblioteca, ver
  <a href="mysqlinfo.library.choosing.php" class="link">Elegir una biblioteca MySQL</a>.
 </p>
 <p class="para">
  Opcionalmente, la opción <strong class="option configure">--with-mysql-sock[=DIR]</strong>
  define la ruta hacia el socket Unix MySQL para todas las extensiones
  MySQL, incluyendo PDO_MYSQL. Si no se especifica, se utilizarán las rutas por defecto.
 </p>
 <p class="para">
  Opcionalmente, la opción <strong class="option configure">--with-zlib-dir[=DIR]</strong>
  será utilizada para definir el prefijo de instalación zlib.
 </p>
 <p class="para">
  <div class="example-contents screen">
<div class="cdata"><pre>
$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
</pre></div>
  </div>
 </p>
 <p class="para">
  El soporte <abbr title="Secure Sockets Layer">SSL</abbr> es activado utilizando las constantes
  <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-key">Pdo\Mysql::ATTR_SSL_<span class="replaceable">*</span></a></code></strong>,
  lo cual equivale a llamar a la función API C
  <a href="https://dev.mysql.com/doc/c-api/8.4/en/mysql-ssl-set.html" class="link external">&raquo;&nbsp;mysql_ssl_set()</a>.
  Además, SSL no puede ser activado con <span class="methodname"><a href="pdo.setattribute.php" class="methodname">PDO::setAttribute()</a></span>
  ya que la conexión ya existe.
  Ver también la documentación MySQL sobre
  <a href="https://dev.mysql.com/doc/en/using-encrypted-connections.html" class="link external">&raquo;&nbsp;la conexión a MySQL con SSL</a>.
 </p>
</div>



   



<div class="section" id="ref.pdo-mysql.constants">
 <h2 class="title">Constantes predefinidas</h2>
 <p class="simpara">Las constantes a continuación son
definidas por este controlador y solo estarán disponibles cuando la extensión
haya sido compilada en PHP o cargada dinámicamente del motor de ejecución.
Además, estas constantes específicas del controlador deberían ser usadas solo
si se usa este controlador. Usar atributos específicos de un controlador
con otro controlador podría causar un comportamiento inesperado.
<span class="function"><a href="pdo.getattribute.php" class="function">PDO::getAttribute()</a></span> podría ser usado para obtener
el atributo <strong><code><a href="pdo.constants.php#pdo.constants.attr-driver-name">PDO::ATTR_DRIVER_NAME</a></code></strong> para verificar el
controlador, si su código puede funcionar en múltiples controladores.</p>
 <dl>
  
   <dt id="pdo.constants.mysql-attr-use-buffered-query">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-use-buffered-query">PDO::MYSQL_ATTR_USE_BUFFERED_QUERY</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-use-buffered-query">Pdo\Mysql::ATTR_USE_BUFFERED_QUERY</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-local-infile">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-local-infile">PDO::MYSQL_ATTR_LOCAL_INFILE</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-local-infile">Pdo\Mysql::ATTR_LOCAL_INFILE</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-local-infile-directory">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-local-infile-directory">PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-local-infile-directory">Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORY</a></code></strong>.
     Disponible a partir de PHP 8.1.0.
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-init-command">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-init-command">PDO::MYSQL_ATTR_INIT_COMMAND</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-init-command">Pdo\Mysql::ATTR_INIT_COMMAND</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-read-default-file">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-read-default-file">PDO::MYSQL_ATTR_READ_DEFAULT_FILE</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-read-default-file">Pdo\Mysql::ATTR_READ_DEFAULT_FILE</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-read-default-group">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-read-default-group">PDO::MYSQL_ATTR_READ_DEFAULT_GROUP</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-read-default-group">Pdo\Mysql::ATTR_READ_DEFAULT_GROUP</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-max-buffer-size">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-max-buffer-size">PDO::MYSQL_ATTR_MAX_BUFFER_SIZE</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-max-buffer-size">Pdo\Mysql::ATTR_MAX_BUFFER_SIZE</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-direct-query">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-direct-query">PDO::MYSQL_ATTR_DIRECT_QUERY</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="pdo.constants.php#pdo.constants.attr-emulate-prepares">PDO::ATTR_EMULATE_PREPARES</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-found-rows">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-found-rows">PDO::MYSQL_ATTR_FOUND_ROWS</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-found-rows">Pdo\Mysql::ATTR_FOUND_ROWS</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-ignore-space">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ignore-space">PDO::MYSQL_ATTR_IGNORE_SPACE</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ignore-space">Pdo\Mysql::ATTR_IGNORE_SPACE</a></code></strong>
    </span>
   </dd>
  
  
   <dt id="pdo.constants.mysql-attr-compress">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-compress">PDO::MYSQL_ATTR_COMPRESS</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-compress">Pdo\Mysql::ATTR_COMPRESS</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-server-public-key">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-server-public-key">PDO::MYSQL_ATTR_SERVER_PUBLIC_KEY</a></code></strong>
    (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-server-public-key">Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-ssl-ca">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-ca">PDO::MYSQL_ATTR_SSL_CA</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-ca">Pdo\Mysql::ATTR_SSL_CA</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-ssl-capath">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-capath">PDO::MYSQL_ATTR_SSL_CAPATH</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-capath">Pdo\Mysql::ATTR_SSL_CAPATH</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-ssl-cert">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-cert">PDO::MYSQL_ATTR_SSL_CERT</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-cert">Pdo\Mysql::ATTR_SSL_CERT</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-ssl-cipher">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-cipher">PDO::MYSQL_ATTR_SSL_CIPHER</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-cipher">Pdo\Mysql::ATTR_SSL_CIPHER</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-ssl-key">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-key">PDO::MYSQL_ATTR_SSL_KEY</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-key">Pdo\Mysql::ATTR_SSL_KEY</a></code></strong>
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-ssl-verify-server-cert">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-ssl-verify-server-cert">PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-ssl-verify-server-cert">Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERT</a></code></strong>
     Disponible a partir de PHP 7.0.18 y PHP 7.1.4.
    </span>
   </dd>
  

  
   <dt id="pdo.constants.mysql-attr-multi-statements">
    <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-multi-statements">PDO::MYSQL_ATTR_MULTI_STATEMENTS</a></code></strong>
     (<span class="type"><a href="language.types.integer.php" class="type int">int</a></span>)
   </dt>
   <dd>
    <span class="simpara">
     Alias de <strong><code><a href="class.pdo-mysql.php#pdo-mysql.constants.attr-multi-statements">Pdo\Mysql::ATTR_MULTI_STATEMENTS</a></code></strong>
    </span>
   </dd>
  

 </dl>
</div>



   




<div class="section" id="pdo-mysql.configuration">
 <h2 class="title">Configuración en tiempo de ejecución</h2>
 <p class="simpara">El comportamiento de estas funciones es
afectado por la configuración en el archivo <var class="filename">php.ini</var>.</p>
 <p class="para">
  <table class="doctable table">
   <caption><strong>Opciones de configuración del driver PDO_MYSQL</strong></caption>
   
    <thead>
     <tr>
      <th>Nombre</th>
      <th>Por defecto</th>
      <th>Cambiable</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td><a href="ref.pdo-mysql.php#ini.pdo-mysql.default-socket" class="link">pdo_mysql.default_socket</a></td>
      <td>&quot;/tmp/mysql.sock&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
     </tr>

     <tr>
      <td><a href="ref.pdo-mysql.php#ini.pdo-mysql.debug" class="link">pdo_mysql.debug</a></td>
      <td>NULL</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
     </tr>

    </tbody>
   
  </table>

  Para más detalles sobre los modos INI_*,
        refiérase a <a href="configuration.changes.modes.php" class="xref">D&oacute;nde una directiva de configuraci&oacute;n puede ser modificada</a>.
 </p>

 <p class="para">Aquí hay una aclaración sobre
el uso de las directivas de configuración.</p>

 <p class="para">
  <dl>
   
    <dt id="ini.pdo-mysql.default-socket">
     <code class="parameter">pdo_mysql.default_socket</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="para">
      Se define un socket de dominio Unix. El valor puede ser también definido
      en el momento de la compilación si se encuentra un socket de dominio Unix
      durante la configuración. Esta configuración INI solo está disponible
      bajo Unix.
     </p>
    </dd>
   
   
    <dt id="ini.pdo-mysql.debug">
     <code class="parameter">pdo_mysql.debug</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="para">
      Se activa el depurado para el driver PDO_MYSQL. Esta configuración solo
      está disponible cuando el driver PDO_MYSQL es compilado con mysqlnd
      y en modo de depurado PDO.
     </p>
    </dd>
   
  </dl>
 </p>
</div>



  </div>

  

 <h2>Tabla de contenidos</h2><ul class="chunklist chunklist_reference"><li><a href="ref.pdo-mysql.connection.php">PDO_MYSQL DSN</a> — Conexi&oacute;n a las bases de datos MySQL</li></ul>
</div>
<?php manual_footer($setup); ?>