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.
(PECL PDO_MYSQL >= 0.1.0)
PDO_MYSQL DSN — Conexión a las bases de datos MySQL
El Data Source Name (DSN) de PDO_MYSQL se compone de los siguientes elementos:
El prefijo DSN es mysql:
.
host
El host donde se encuentra el servidor de base de datos.
port
El número de puerto donde el servidor de base de datos está escuchando.
dbname
El nombre de la base de datos.
unix_socket
El socket Unix de MySQL (no debe utilizarse con
host
o port
).
charset
El juego de caracteres. Consulte la documentación sobre los conceptos de los juegos de caracteres para obtener más información.
Ejemplo #1 Ejemplos con el DSN de PDO_MYSQL
El siguiente ejemplo muestra el DSN PDO_MYSQL para conectarse a las bases de datos MySQL:
mysql:host=localhost;dbname=testdb
mysql:host=localhost;port=3307;dbname=testdb mysql:unix_socket=/tmp/mysql.sock;dbname=testdb
Nota: Solo Unix:
Cuando el nombre de host es
"localhost"
, la conexión se realiza a través de un socket Unix. Si PDO_MYSQL está compilado conlibmysqlclient
, entonces el archivo de socket es el especificado durante la compilación delibmysqlclient
. Si PDO_MYSQL está compilado conmysqlnd
, un socket por omisión puede ser indicado a través del parámetro pdo_mysql.default_socket.
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.
xwisdom made a mistake in his comment and got it backwards, correction below:
If you are having problems accessing a remote MYSQL database, the solution is to make sure that you add a white-space after "mysql:"
Change this...:
mysql:host=remote;
...to this:
mysql: host=remote;
See original solution here:
http://stackoverflow.com/a/25432156
here is the example i prefer myself, in my opinion, this is almost always "the correct way" to do it:
<?php
$db = new \PDO('mysql:host=localhost;dbname=testdb;charset=utf8mb4', 'username', 'password', array(
\PDO::ATTR_EMULATE_PREPARES => false,
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION
));