Signaler

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

Posez votre question abirgl 49Messages postés lundi 31 octobre 2016Date d'inscription 12 janvier 2017 Dernière intervention - Dernière réponse le 10 janv. 2017 à 08:45 par abirgl
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 
Utile
+0
moins plus
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. 5820Messages postés mardi 15 mai 2012Date d'inscription 11 janvier 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.
Répondre
abirgl 49Messages postés lundi 31 octobre 2016Date d'inscription 12 janvier 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 :(
Répondre
le père. 5820Messages postés mardi 15 mai 2012Date d'inscription 11 janvier 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 ?
Répondre
jordane45 15685Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 12 janvier 2017 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".
Répondre
abirgl 49Messages postés lundi 31 octobre 2016Date d'inscription 12 janvier 2017 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 :)
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !