<?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> <reference xml:id="ref.pdo-mysql" xmlns="http://docbook.org/ns/docbook"> <?phpdoc extension-membership="bundledexternal" ?> <title>MySQL Functions (PDO_MYSQL)</title> <titleabbrev>MySQL (PDO)</titleabbrev> <partintro> <section xml:id="pdo-mysql.intro"> &reftitle.intro; <para> PDO_MYSQL is a driver that implements the <link linkend="intro.pdo">PHP Data Objects (PDO) interface</link> to enable access from PHP to MySQL 3.x, 4.x and 5.x databases. </para> <para> PDO_MYSQL will take advantage of native prepared statement support present in MySQL 4.1 and higher. If you're using an older version of the mysql client libraries, PDO will emulate them for you. </para> <warning> <para> Beware: Some MySQL table types (storage engines) do not support transactions. When writing transactional database code using a table type that does not support transactions, MySQL will pretend that a transaction was initiated successfully. In addition, any DDL queries issued will implicitly commit any pending transactions. </para> </warning> </section> &reference.pdo-mysql.configure; &reference.pdo-mysql.constants; &reference.pdo-mysql.ini; </partintro> <refentry xml:id="ref.pdo-mysql.connection"> <refnamediv> <refname>PDO_MYSQL DSN</refname> <refpurpose>Connecting to MySQL databases</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <para> The PDO_MYSQL Data Source Name (DSN) is composed of the following elements: <variablelist> <varlistentry> <term>DSN prefix</term> <listitem> <para> The DSN prefix is <userinput>mysql:</userinput>. </para> </listitem> </varlistentry> <varlistentry> <term><literal>host</literal></term> <listitem> <para> The hostname on which the database server resides. </para> </listitem> </varlistentry> <varlistentry> <term><literal>port</literal></term> <listitem> <para> The port number where the database server is listening. </para> </listitem> </varlistentry> <varlistentry> <term><literal>dbname</literal></term> <listitem> <para> The name of the database. </para> </listitem> </varlistentry> <varlistentry> <term><literal>unix_socket</literal></term> <listitem> <para> The MySQL Unix socket (shouldn't be used with <literal>host</literal> or <literal>port</literal>). </para> </listitem> </varlistentry> <varlistentry> <term><literal>charset</literal></term> <listitem> <para> The character set. See the <link linkend="mysqlinfo.concepts.charset">character set</link> concepts documentation for more information. </para> <para> Prior to PHP 5.3.6, this element was silently ignored. The same behaviour can be partly replicated with the <constant>PDO::MYSQL_ATTR_INIT_COMMAND</constant> driver option, as the following example shows. </para> <warning> <simpara> The method in the below example can only be used with character sets that share the same lower 7 bit representation as ASCII, such as ISO-8859-1 and UTF-8. Users using character sets that have different representations (such as UTF-16 or Big5) <emphasis>must</emphasis> use the <literal>charset</literal> option provided in PHP 5.3.6 and later versions. </simpara> </warning> <para> <example> <title> Setting the connection character set to UTF-8 prior to PHP 5.3.6 </title> <programlisting role="php"> <![CDATA[ <?php $dsn = 'mysql:host=localhost;dbname=testdb'; $username = 'username'; $password = 'password'; $options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', ); $dbh = new PDO($dsn, $username, $password, $options); ?> ]]> </programlisting> </example> </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="changelog"> &reftitle.changelog; <para> <informaltable> <tgroup cols="2"> <thead> <row> <entry>&Version;</entry> <entry>&Description;</entry> </row> </thead> <tbody> <row> <entry>5.3.6</entry> <entry> Prior to version 5.3.6, <literal>charset</literal> was ignored. </entry> </row> </tbody> </tgroup> </informaltable> </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title>PDO_MYSQL DSN examples</title> <para> The following example shows a PDO_MYSQL DSN for connecting to MySQL databases: <programlisting> <![CDATA[ mysql:host=localhost;dbname=testdb ]]> </programlisting> More complete examples: <programlisting> <![CDATA[ mysql:host=localhost;port=3307;dbname=testdb mysql:unix_socket=/tmp/mysql.sock;dbname=testdb ]]> </programlisting> </para> </example> </para> </refsect1> <refsect1 role="notes"> &reftitle.notes; <note> <title>Unix only:</title> <para> When the host name is set to <literal>"localhost"</literal>, then the connection to the server is made thru a domain socket. If PDO_MYSQL is compiled against libmysqlclient then the location of the socket file is at libmysqlclient's compiled in location. If PDO_MYSQL is compiled against mysqlnd a default socket can be set thru the <link linkend="ini.pdo-mysql.default-socket"> pdo_mysql.default_socket</link> setting. </para> </note> </refsect1> </refentry> </reference> <!-- 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 -->