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
35429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 mai 2022
4 149 > 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