8796 sujets

Développement web côté serveur, CMS

Bonjour,
je souhaite accéder à une base de données MSSQL avec instance nommée via l'extension PDO.

je lance la commande suivante :
$bdd = new PDO('mssql:host=nom01\nom02;dbname=Unmanage_Table', '*****', '*****');

je souhaite donc acceder à la base nom01\nom02 sur mon propre server mais lorsque je lance cette comande, voici ce que Internet explorer 6 m'affiche le message d'erreur suivant:

PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] General SQL Server error: Check messages from the SQL Server. (severity 5)' in C:\www\Unmanage\connect.inc.php:19 Stack trace: #0 C:\www\Unmanage\connect.inc.php(19): PDO->__construct('mssql:host=nom1/...', 'sa', 'catherin1') #1 C:\www\Unmanage\UnmanageTextArea.php(5): include('C:\www\Unmanage...') #2 C:\www\Unmanage\index.php(11): include('C:\www\Unmanage...') #3 {main} thrown in C:\www\Unmanage\connect.inc.php on line 19

à savoir que la page connect.inc.php est une page qui sert de connection et qui contient à la ligne 19 le code suivant :

$bdd = new PDO('mssql:host=nom01\nom02;dbname=Unmanage_Table', '*****', 


Cette page est appelée dans la page UnmanageTextArea.php

merci de votre aide Smiley smile
L'erreur en question signale qu'il y a eu une erreur mais surtout que celle-ci n'a pas été prise en compte.
Commence par récupérer cette erreur pour afficher de quoi il s'agit plus précisément.

try {
    $bdd = new PDO('mssql:host=nom01\nom02;dbname=Unmanage_Table', 'user', 'pass');
}
catch (PDOException $e) {
    echo $e->getMessage();
}

ou bien précise à PDO la façon dont tu veux traiter les erreurs.

// exemple pour afficher des erreurs PHP traditionnelles (voir:  http://www.php.net/manual/fr/pdo.setattribute.php)
 
$attributes = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
);

$bdd = new PDO('mssql:host=nom01\nom02;dbname=Unmanage_Table', 'user', 'pass', $attributes);

Modifié par moust (03 Nov 2010 - 19:01)
Bonjour,
Merci de ta réponse, j'ai éssayé la deuxième méthode : rien ne change.
Ensuite pour la première, j'ai changé mon code comme tu me l'as conseillé, voici ce qu'il m'affiche:
Erreur : SQLSTATE[HY000] General SQL Server error: Check messages from the SQL Server. (severity 5)PHP Notice: Undefined variable: attributes in C:\www\Unmanage\connect.inc.php on line 21 

Or, j'ai rajouté ceci en début de page :

	if(!isset($bdd)){
		$bdd=NULL;
	}


Aurais tu une idée d'ou cela vient ?
Merci
Si tu a pris la première solution c'est que tu as du faire un mixe avec la deuxième.
Dans le premier cas tu na pas besoin de passer le dernier paramètre "$attributes" (et qui n'est pas défini dans ce cas là).

Ton code de test sur la variable $bdd ne sert à rien en revanche Smiley cligne

Donc au final ne laisse que le code suivant (en configurant la connection comme il se doit) :

try { 
    $bdd = new PDO('mssql:host=nom01\nom02;dbname=Unmanage_Table', 'user', 'pass'); 
} 
catch (PDOException $e) { 
    echo $e->getMessage(); 
}


D'après ton problème je pense que tu auras une erreur d'afficher mais le but est que celle-ci porte sur le problème rencontré à la connection et non plus sur le fait que tu ne traitait pas l'erreur en question, comme dans ton erreur d'origine.
oui j'ai supprimé le $attributes,

je ne comprend pas trop bien ta phrase : "D'après ton problème je pense que tu auras une erreur d'afficher mais le but est que celle-ci porte sur le problème rencontré à la connection et non plus sur le fait que tu ne traitait pas l'erreur en question, comme dans ton erreur d'origine."

je ne sais pas quoi faire ... gros pépin

J'ai essayé avec le code suivant , sans succès, je pense vraiment que c'est un problème de connexion à la bdd :

$con =mssql_connect($serverLchost,$userIDLchost,$passwordLchost) or die("couldn't connect to Server NSM");
mssql_select_db($bdNSM,$con) or die("couldn't connect to DB NSM");


il m'affiche:
"
couldn't connect to DB nom01 Warning: mssql_select_db() [function.mssql-select-db]: message: Could not locate entry in sysdatabases for database 'Unmanage'. No entry found with that name. Make sure that the name is entered correctly. (severity 16) in C:\www\Unmanage\connect.inc.php on line 42 PHP Warning: mssql_select_db() [function.mssql-select-db]: Unable to select database: Unmanage in C:\www\Unmanage\connect.inc.php on line 42
"
Modifié par dekker (04 Nov 2010 - 15:51)