Bonjour,

Voici 4 syntaxes de connexion, la syntaxe 3 plante. Ma question est de savoir pourquoi parfois on met dans le driver mysql:localhost, parfois mysql:host=localhost et si on travaille avec des constantes, seule la syntaxe mysql:SERVEUR fonctionne. Pourquoi aussi les deux syntaxes : dbname ou db name sont bonnes ?
Quelle est la meilleure solution ?
Merci pour ces éclaircissements
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
<?php
 
define('SERVEUR', 'localhost');
define('BD', 'test');
define('LOGIN', 'toto');
define('PWD', 'toto');
echo "Syntaxe 1 ";
try {
    $connect_str = "mysql:localhost;db name=test";
    $dbmysql = new PDO($connect_str, LOGIN, PWD);
    $dbmysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "connecté à Mysql";
} catch (PDOException $pdoEx) {
    echo "<p>" . $pdoEx . "</p>";
}
echo "<p>Syntaxe 2 ";
try {
    $connect_str = "mysql:host=localhost;dbname=test";
    $dbmysql = new PDO($connect_str, LOGIN, PWD);
    $dbmysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "connecté à Mysql </p>";
} catch (PDOException $pdoEx) {
    echo "<p>" . $pdoEx . "</p>";
}
echo "<p>Syntaxe 3 ";
try {
    $connect_str = "mysql:host=SERVEUR;dbname=BD";
    $dbmysql = new PDO($connect_str, LOGIN, PWD);
    $dbmysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "connecté à Mysql</p>";
} catch (PDOException $pdoEx) {
    echo "<p>" . $pdoEx . "</p>";
}
echo "<p>Syntaxe 4 ";
try {
    $connect_str = "mysql:SERVEUR;dbname=BD";
    $dbmysql = new PDO($connect_str, LOGIN, PWD);
    $dbmysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "connecté à Mysql</p>";
} catch (PDOException $pdoEx) {
    echo "<p>" . $pdoEx . "</p>";
}
?>