Bonjour,

conscient qu'il est grand temps de passer des fonctions mysql_xxx à PDO, je veux le faire, mais je tombe sur un souci : la connexion à la base ne marche plus !

Connexion avec mysql_xxx :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
        $entered_user = $_SERVER["PHP_AUTH_USER"];
	$entered_pass = $_SERVER["PHP_AUTH_PW"];
 
	if (isset($entered_user) && isset($entered_pass)) {
                $dbase="su_dev_eis";
		mysql_connect("localhost",$entered_user,$entered_pass) or die ("Connexion impossible sur le serveur MySQL");
                mysql_select_db($dbase) or die ("Sélection de la base SQL impossible");
                ...

Connexion avec PDO :
définition de la classe :
Code php : 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
<?php
error_reporting(E_ALL);
ini_set('display_errors','1'); 
// MyPDO
 //la classe MyPdo hérite de la classe PDO (extends)
class MyPdo extends PDO {
 
	static public $DB_NAME = "su_dev_eis";
 
	static public $HOST = "localhost";
 
 
// le constructeur de MyPdo appelle le constructeur de PDO en lui passant ses paramètres	
	function __construct() {
	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
	$pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;//important sur les configs récentes
	$pdo_options[PDO::ATTR_DEFAULT_FETCH_MODE] = PDO::FETCH_OBJ;//pour le mode objet
	$pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";//pour l'utf-8
 
	parent::__construct('mysql:host=' . MyPdo::$HOST . ';dbname=' . MyPdo::$DB_NAME, $_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"], $pdo_options);
 
 
	}
 
}
// fin MyPDO
?>

utilisation de la classe (donc connexion) :
Code php : 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
<?php
header('Content-type: text/html; charset=UTF-8');
//// connexion
include 'MyPdo.php';
 
try{
				$bdd = new MyPDO();
				// exécuter un select puis afficher les lignes
				$sql='select * from `user` order by name';
				$qid = $bdd->prepare($sql);
				$qid->execute();
				while( $ligne=$qid->fetch(PDO::FETCH_OBJ) )
					echo "name : $ligne->name  firstname : $ligne->firstname <br/>";
				$bdd=NULL;
			}
catch(PDOException $e){
				echo "argggggggggggggg".$e->getMessage();
			}
?>
et au lieu de passer dans le try, on passe dans le catch.

arggggggggggggggSQLSTATE[42S02]: Base table or view not found: 1146 Table 'su_dev_eis.user' doesn't exist
Pourquoi ?