Echec de connexion à sql server via une classe php

Résolu/Fermé
abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017 - 4 janv. 2017 à 10:36
abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017 - 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

1 réponse

Utilisateur anonyme
4 janv. 2017 à 10:55
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
0
abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017
4 janv. 2017 à 13:56
J'ai utilisé un tableau associatif et ça me renvoie cette erreur :(
Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -1 [code] => -1 [2] => Invalid option was passed to sqlsrv_connect. [message] => Invalid option was passed to sqlsrv_connect. ) )

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

sqlsrv_connect prend en paramètres un string et un array et voila j'ai passé ces deux paramètres, c'est quoi le problème s'il vous plait et comment je peux le résoudre ?
0
Utilisateur anonyme > abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017
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.
0
abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017
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 :(
0
Utilisateur anonyme > abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017
Modifié par le père. le 9/01/2017 à 18:25
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 ?
0
jordane45 Messages postés 38304 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705 > Utilisateur anonyme
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".
0