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 — Connexion aux bases de données MySQL
Le Data Source Name (DSN) de PDO_MYSQL est composé des éléments suivants :
Le préfixe DSN est mysql:
.
host
L'hôte sur lequel le serveur de base de données se situe.
port
Le numéro de port où le serveur de base de données est en train d'écouter.
dbname
Le nom de la base de données.
unix_socket
Le socket Unix MySQL (ne devrait pas être utilisé avec
host
ou port
).
charset
Le jeu de caractères. Voir la documentation sur les concepts des jeux de caractères pour plus d'informations.
Exemple #1 Exemples avec le DSN de PDO_MYSQL
L'exemple suivant montre le DSN PDO_MYSQL pour se connecter aux bases de données MySQL :
mysql:host=localhost;dbname=testdb
mysql:host=localhost;port=3307;dbname=testdb mysql:unix_socket=/tmp/mysql.sock;dbname=testdb
Note: Unix seulement:
Lorsque le nom d'hôte est
"localhost"
, la connexion est faite par un socket Unix. Si PDO_MYSQL est compilé aveclibmysqlclient
, alors le fichier de socket est celui précisé à la compilation delibmysqlclient
. Si PDO_MYSQL est compilé avecmysqlnd
, un socket par défaut peut être indiqué via la paramètre 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
));