Echec de connexion à sql server via une classe php

Résolu
abirgl Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   -  
abirgl Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   -
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

A voir également:

1 réponse

Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > 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".
0