downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Oracle (PDO)> <MySQL (PDO)
Last updated: Fri, 20 May 2011

view this page in

PDO_MYSQL DSN

(PECL PDO_MYSQL >= 0.1.0)

PDO_MYSQL DSNConexión a las bases de datos MySQL

Descripción

El Data Source Name (DSN) de PDO_MYSQL está compuesto por los siguientes elementos:

prefijo DSN

El prefijo DSN es mysql:.

host

El nombre de host donde reside el servidor de base de datos.

port

El número de puerto que el servidor de base de datos está escuchando.

dbname

El nombre de la base de datos.

unix_socket

El socket Unix MySQL (no debe ser usado junto a host o port).

charset

Actualmente ignorado.

Ejemplos

Example #1 ejemplos PDO_MYSQL DSN

El siguiente ejemplo muestra una PDO_MYSQL DSN para conectar a base de datos MySQL:

mysql:host=localhost;dbname=testdb
Más ejemplos completos:
mysql:host=localhost;port=3307;dbname=testdb
mysql:unix_socket=/tmp/mysql.sock;dbname=testdb

Notas

Note: Solo Unix:

Cuando un nombre de host está definido como "localhost", la conexión al servidor se realiza a través de un socket de dominio. Si PDO_MYSQL se compila para libmysql entonces la ubicación del archivo de socket es la ubicación de compilado de libmysql. Si PDO_MYSQL se compila para mysqlnd puede ser establecido un socket por defecto a través de la configuración de pdo_mysql.default_socket.



Oracle (PDO)> <MySQL (PDO)
Last updated: Fri, 20 May 2011
 
add a note add a note User Contributed Notes PDO_MYSQL DSN
rustamabd at gmail dot com 15-Mar-2009 08:18
Even though pdo_mysql accepts an additional "charset" parameter in the DSN (see mysql_driver.c:442), as of PHP 5.2.9 it does not do anything with it.

A possible workaround to set the charset to UTF-8, for example, could be:
<?php

    $dbh
= new PDO("mysql:$connstr"$user, $password);

   
$dbh -> exec("set names utf8");

?>
codeslinger at compsalot dot com 11-Mar-2009 03:07
Here is a function that provides a generic interface to connect
 to a mySQL PDO.  This takes care of the default values automatically
and deals with the difference between a host name and a socket path.

The advantage of using LOCALHOST for the default is that you don't have
 to worry about IPv4 vs IPv6.  But keep in mind that mySQL login security
does not treat the name as being interchangeable with the ip address. 
You could of course change the default to use a socket path instead.

Enjoy!
Codeslinger

P.S. This form forces you to limit the length of your lines, so I had to
split a couple of things.

<?php

//pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
//
//  Creates a new mySQL database connection
//
//  Returns a PDO object or an error message 
//  Use: is_object()  to verify the result
//
//
//  If $DBHost starts with a '/' then it is treated as a Socket
//
//  if $DBHost is empty it will default to LOCALHOST which is NOT the
//  same as 127.0.0.1
//
//  $DBPort is optional and will use the standard mySQL default if not
//  specified
//
//  The database name ($DBName) is optional, but if it is specified
//  it must exist or an error results
//
//  2009-03-11  Created: by codeslinger at compsalot.com
//
//          Released to the Public Domain free to use and modify
//
//
function dbPDO_Connect_mySQL($DBUser, $DBPass, $DBName = false,
                           
$DBHost = false, $DBPort = false)
{

   
$DBNameEq = empty($DBName) ? '' : ";dbname=$DBName";
   
    if (empty(
$DBHost)) $DBHost = 'localhost';
   
    If (
$DBHost[0] === '/')
    {
       
$Connection = "unix_socket=$DBHost";
    }
    else
    {
        if (empty(
$DBPort)) $DBPort = 3306;
       
$Connection = "host=$DBHost;port=$DBPort";
    }
   
   
//======================
   
   
try
    {
       
$dbh     = new PDO("mysql:$Connection$DBNameEq"
                                 
$DBUser, $DBPass);
    }
    catch (
PDOException $e)
    {
        return
$e->getMessage();
    }

    return
$dbh;
}

//================================
//================================
//
//Example of use:

  //connects to the default (localhost)

 
$dbh = dbPDO_Connect_mySQL('user', 'password', 'database');

 
//............................................................
  //error handler goes here

 
if (!is_object($dbh)) trigger_error("Failed to connect to 'database' "
      
." | Error = $dbh", E_USER_ERROR);

 
//............................................................
  //get a record

 
$sql = "select * from SomeTable limit 1;";
   
 
$dbRS = $dbh->query($sql);
 
$row = empty($dbRS) ? false : $dbRS->fetch(PDO::FETCH_ASSOC);
  if (!empty(
$dbRS)) $dbRS->closeCursor();

 
//............................................................
  //do something with the data

 
if (!empty($row)) print_r($row);   
  else echo
"Error? no data found\n";

?>
codeslinger at compsalot dot com 11-Mar-2009 11:00
I have tested this and found that the "dbname" field is optional.  Which is a good thing if you must first create the db.

After creating a db be sure to exec a "use dbname;"  command, or else use fully specified table references.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites