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

Signaler
Messages postés
127
Date d'inscription
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017
-
Messages postés
127
Date d'inscription
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017
-
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

1 réponse


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 :
https://www.php.net/manual/fr/function.sqlsrv-connect.php
Cette page te donne le lien vers la liste des clés à utiliser
https://docs.microsoft.com/en-us/sql/connect/php/connection-options?redirectedfrom=MSDN&view=sql-server-ver15
Utilisateur anonyme >
Messages postés
127
Date d'inscription
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017

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.
Messages postés
127
Date d'inscription
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017

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 :(
Utilisateur anonyme >
Messages postés
127
Date d'inscription
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017

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 ?
Messages postés
29170
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 août 2020
2 675 > Utilisateur anonyme
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".
Messages postés
127
Date d'inscription
lundi 31 octobre 2016
Statut
Membre
Dernière intervention
20 juin 2017
>
Messages postés
29170
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 août 2020

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 :)