Menu

Echec de connexion à sql server via une classe php [Résolu/Fermé]

abirgl 127 Messages postés lundi 31 octobre 2016Date d'inscription 20 juin 2017 Dernière intervention - 4 janv. 2017 à 10:36 - Dernière réponse : abirgl 127 Messages postés lundi 31 octobre 2016Date d'inscription 20 juin 2017 Dernière intervention
- 10 janv. 2017 à 08:45
Bonjour,
J'ai crée une classe php pour se connecter à ma base sqlserver, mais ça me retourne l'erreur suivante:
Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -8 [code] => -8 [2] => An invalid connection option key type was received. Option key types must be strings. [message] => An invalid connection option key type was received. Option key types must be strings. ) )
Quelqu'un peut m'aider pour corriger ce problème s'il vous plait ? , voici mon code:

<?php
class Connect
{
public $serverName;
public $Database;
public $CharacterSet;
public $UID;
public $PWD;
public function __construct()
{
$this->serverName="192.168.1.@@@";
$this->Database ="CstData@@@";
$this->CharacterSet="UTF-8";
$this->UID ="sa";
$this->PWD="@dmin@@@";
$connectionInfo=array( $this->Database , $this->CharacterSet,$this->UID, $this->PWD);
$conn=sqlsrv_connect($this->serverName,$connectionInfo);
var_dump($conn);
if($conn===false)
{
die(print_r(sqlsrv_errors(),true));
}
}
}
$c=new Connect;
?>

Merci d'avance

Afficher la suite 

7 réponses

le père. 6075 Messages postés mardi 15 mai 2012Date d'inscription 20 juin 2018 Dernière intervention - 4 janv. 2017 à 10:55
0
Merci
Bonjour

Comme indiqué dans le message d'erreur, les clés de ton tableau d'options ne sont pas du bon type, elles devraient être des string. Comme tu n'as pas mis de clés, PHP utilise simplement des index numériques.
Tu aurais dû utiliser un tableau associatif comme il est bien dit dans la doc php :
http://php.net/manual/fr/function.sqlsrv-connect.php
Cette page te donne le lien vers la liste des clés à utiliser
https://msdn.microsoft.com/en-us/library/ff628167.aspx
le père. 6075 Messages postés mardi 15 mai 2012Date d'inscription 20 juin 2018 Dernière intervention > abirgl 127 Messages postés lundi 31 octobre 2016Date d'inscription 20 juin 2017 Dernière intervention - 4 janv. 2017 à 17:12
Normal, tu n'as pas fait ce qui est demandé.
On te dit, pour le paramètre "option", d'utiliser un array dont les clés sont données dans la page de chez microsoft.
Quelles sont les clés que tu as fournies ? Sont-elles dans cette page ? Non.
abirgl 127 Messages postés lundi 31 octobre 2016Date d'inscription 20 juin 2017 Dernière intervention - 9 janv. 2017 à 14:38
J'ai passé les deux options string et array à la fonction sqlsrv_connect
j'arrive pas à trouver le problème , svp aidez moi , mon code est posté la dessus :(
le père. 6075 Messages postés mardi 15 mai 2012Date d'inscription 20 juin 2018 Dernière intervention > abirgl 127 Messages postés lundi 31 octobre 2016Date d'inscription 20 juin 2017 Dernière intervention - 9 janv. 2017 à 18:24
Tes clés ne sont pas bonnes. As-tu lu les liens que je t'ai donnés, et mon message précédent ?
On te dit, pour le paramètre "option", d'utiliser un array dont les clés sont données dans la page de chez microsoft.
Regarde ce que tu as écrit : quelles sont les clés que tu utilises ? Sont-elles dans la page de chez Microsoft ?
jordane45 21437 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 juin 2018 Dernière intervention > le père. 6075 Messages postés mardi 15 mai 2012Date d'inscription 20 juin 2018 Dernière intervention - 9 janv. 2017 à 20:14
Bonjour,

Autrement dit ( histoire d'aider un peu.. car parfois Abi a un peu de mal... :-) )

dans :
$connectionInfo=array( $this->Database=>"CstData@@@" , $this->CharacterSet=>"UTF-8",$this->UID=>"sa", $this->PWD=>"@dmin@@@");

Au lieu d'avoir :
 $this->Database
tu devrais avoir :
"Database"

Au lieu d'avoir :
 $this->CharacterSet
tu devrais avoir :
"CharacterSet"

etc.... (bref .. tu as mis des $this en trop et oublié de mettre des "quotes".
abirgl 127 Messages postés lundi 31 octobre 2016Date d'inscription 20 juin 2017 Dernière intervention > jordane45 21437 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 juin 2018 Dernière intervention - 10 janv. 2017 à 08:45
Bonjour Jordane,
Merci beaucoup :D ça marche maintenant , vous êtes habitués par mes blocages :p j'ai toujours du mal à comprendre rapidement, c'est le cas de quelqu'un qui commence sa carrière avec une technologie qui n'a jamais travaillé avec et qui ne trouve aucun encadrement par la société , donc j'ai toujours recours à vous , merci pour vos réponses et vos aides :)