Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & SQL-Server
PHP & SQL-Server Forum d'entraide sur SQL-Server avec PHP. Avant de poster -> FAQ SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2011, 11h15   #1
Candidat au titre de Membre du Club
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Lamine
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 84
Points : 11
Points : 11
Par défaut Probleme avec la fonction sqlsrv_query() pour php/sqlserver 2008

Bonjour,

J'ai un souci avec la fonction sqlsrv_query() depuis 2 jours et ça rend fou !!!
En fait, j'ai un formulaire avec des données à saisir et via ce formulaire, les données doivent être enregistrées dans une base de données sqlserver 2008. A chaque fois que je valide le formulaire, j'ai l'erreur suivante sachant que la connexion est réussi:

Connection established.
Warning: sqlsrv_query() expects parameter 1 to be resource, object given in D:\Program Files\EasyPHP-5.3.6.0\www\base\abc.php on line 36
Erreur. Pas d'enregistrement effectuéArray ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -14 [code] => -14 [2] => An invalid parameter was passed to sqlsrv_query. [message] => An invalid parameter was passed to sqlsrv_query. ) )


Voici le code du formulaire:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
<html>
<form id="Registre Personnes" name="Registre Personnes" method="POST" action="abc.php">
  <p>
    <label for="CNAP"><strong>CNAP</strong></label>
    <input type="text" name="CNAP" id="CNAP" />
 
  <p>
    <label for="Nom"><strong>Nom</strong></label>
    <input type="text" name="Nom" id="Nom" />
</span></p>
  <p>
    <label for="Prenom"><strong>Prenom</strong></label>
    <input type="text" name="Prenom" id="Prenom" />
</span></p>
  <p>
    <label for="Sexe"><strong>Sexe</strong></label>
    <select name="Sexe" id="Sexe">
      <option>Masculin</option>
      <option>Feminin</option>
    </select>
  </p>
  <p>
    <label for="Date_de_Naissance"><strong>Date de Naissance</strong></label>
    <input onclick="ds_sh(this);" type="text" name="Date_de_Naissance" id="Date_de_Naissance" style="cursor: text"/>
 
  <p>
    <label for="Date_de_Creation"><strong>Date de Creation</strong></label>
    <input onclick="ds_sh(this);" type="text" name="Date_de_Creation" id="Date_de_Creation" style="cursor: text"/>
 
  <p>
    <input type="submit" name="button" id="button" value="Valider" />
    <input type="reset" name="button2" id="button2" value="Réinitialiser" />
</form>
</html>

Voici le fichier php de traitement:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
<?php
# FileName="Connection_php_mysql.htm"
# Type="SQLSERVER"
# HTTP="true"
$Mainconnect = "KGR50\SQLEXPRESS";
$database_Mainconnect = "alpha_db";
$username_Mainconnect = "alpha";
$password_Mainconnect = "gamma";
 
/*
Connect to the local server using Windows Authentication and specify
the AdventureWorks database as the database in use. To connect using
SQL Server Authentication, set values for the "UID" and "PWD"
 attributes in the $connectionInfo parameter. For example:
*/
$connectionInfo = array("UID" =>$username_Mainconnect, "PWD" =>$password_Mainconnect, "Database"=>$database_Mainconnect);
 
/*$serverName = $hostname_Mainconnect;*/
$conn = new PDO("sqlsrv:server=$Mainconnect;database=$database_Mainconnect",$username_Mainconnect,$password_Mainconnect);
 
if($conn)
{
     echo "Connection established.\n";
}
else
{
     echo "Connection could not be established.\n";
}
 
//-----------------------------------------------
// Perform operations with connection.
//-----------------------------------------------
$insertSQL="INSERT INTO registre_personnes (CNAP, Nom, Prenom, Sexe, Date_de_Naissance, Date_de_Creation)
VALUES ('$_POST[CNAP]','$_POST[Nom]','$_POST[Prenom]','$_POST[Sexe]','$_POST[Date_de_Naissance]','$_POST[Date_de_Creation]')";
 
if(sqlsrv_query($conn,$insertSQL))
{
      echo "Enregistrement effectué";
} 
else
{
      echo "Erreur. Pas d'enregistrement effectué";
      die(print_r(sqlsrv_errors(),true));
}
 
?>
Merci pour votre aide !!!!
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 11h29   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
tu mélanges 2 extensions PDO_sqlsrv et sqlsrv, donc c'est l'une ou l'autre
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 11h49   #3
Candidat au titre de Membre du Club
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Lamine
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 84
Points : 11
Points : 11
Par défaut Probleme avec la fonction sqlsrv_query() pour php/sqlserver 2008

Merci de ta réponse, mais pourrais-tu modifier le code pour que je puisse voir si possible. Merci.
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 11h57   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par lemzo84 Voir le message
Merci de ta réponse, mais pourrais-tu modifier le code pour que je puisse voir si possible. Merci.
si tu te connecte sur PDO utilise PDO query, ou exec
de plus ton code n'est pas sécurisé il faut échapper les valeurs ou faire une requete préparée
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 12h06   #5
Candidat au titre de Membre du Club
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Lamine
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 84
Points : 11
Points : 11
Par défaut Probleme avec la fonction sqlsrv_query() pour php/sqlserver 2008

Pourrais-tu modifier mon code en haut stp , car je suis super novice avec SQLServer 2008. J'ai l'habitude de bosser avec Oracle ou Mysql. Merci.
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 12h11   #6
Candidat au titre de Membre du Club
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Lamine
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 84
Points : 11
Points : 11
Par défaut Probleme avec la fonction sqlsrv_query() pour php/sqlserver 2008

Voila ce que j'obtiens quand je fais la modif:

Code :
1
2
3
 
Connection established.
Fatal error: Non-static method PDO::exec() cannot be called statically in D:\Program Files\EasyPHP-5.3.6.0\www\base\abc.php on line 36
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 13h33   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
lit bien les exemples...
si t'as plus l'habitude d’utiliser les autre extensions pourquoi avoir choisie PDO ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 13h46   #8
Candidat au titre de Membre du Club
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Lamine
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 84
Points : 11
Points : 11
Par défaut Probleme avec la fonction sqlsrv_query() pour php/sqlserver 2008

Salut, pour ta question, c'est la première fois que j'utilise SQL server. Je ne suis pas trop fan des outils microsoft !!!
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 13h47   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par lemzo84 Voir le message
Salut, pour ta question, c'est la première fois que j'utilise SQL server. Je ne suis pas trop fan des outils microsoft !!!
aucun rapport PDO c'est PHP pas Microsoft
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 14h20   #10
Candidat au titre de Membre du Club
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Lamine
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 84
Points : 11
Points : 11
Par défaut Probleme avec la fonction sqlsrv_query() pour php/sqlserver 2008

J'ai refait la partie php et il ne m'affiche pas d'erreurs. Par contre, mes donnees ne sont pas sauvegardés .
Voici la partie php:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
 
<?php
# FileName="Connection_php_mysql.htm"
# Type="SQLSERVER"
# HTTP="true"
$Mainconnect = "KGR50\SQLEXPRESS";
$database_Mainconnect = "alpha_db";
$username_Mainconnect = "alpha";
$password_Mainconnect = "gamma";
 
/*
Connect to the local server using Windows Authentication and specify
the AdventureWorks database as the database in use. To connect using
SQL Server Authentication, set values for the "UID" and "PWD"
 attributes in the $connectionInfo parameter. For example:
*/
$connectionInfo = array("UID" =>$username_Mainconnect, "PWD" =>$password_Mainconnect, "Database"=>$database_Mainconnect);
 
/*$serverName = $hostname_Mainconnect;*/
$conn = new PDO("sqlsrv:server=$Mainconnect;database=$database_Mainconnect",$username_Mainconnect,$password_Mainconnect);
 
if($conn)
{
     echo "Connection established.\n";
}
else
{
     echo "Connection could not be established.\n";
}
 
//-----------------------------------------------
// Perform operations with connection.
//-----------------------------------------------
 
$CNAP='$_POST[CNAP]';
$Nom='$_POST[Nom]';
$Prenom='$_POST[Prenom]';
$Sexe='$_POST[Sexe]'; 
$Date_de_Naissance='$_POST[Date_de_Naissance]';
$Date_de_Creation='$_POST[Date_de_Creation]';
 
$insertSQL="INSERT INTO registre_personnes (CNAP, Nom, Prenom, Sexe, Date_de_Naissance, Date_de_Creation)
VALUES ($CNAP,$Nom,$Prenom,$Sexe,$Date_de_Naissance,$Date_de_Creation)";
 
$query=$conn->prepare($insertSQL);
$query->execute(array($CNAP, $Nom, $Prenom, $Sexe, $Date_de_Naissance, $Date_de_Creation));
 
?>
Merci pour ton aide.
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 14h36   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
il faut activer la gestion des erreurs pour PDO : http://php.net/manual/fr/pdo.error-handling.php

t'as requete n'est toujours pas sécurisé, de plus ne préparer aucun valeur, donc le execute est est mal utilisé, si tu ne connais pa PDO utilise l'extension sqlsrv classique
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 14h49   #12
Candidat au titre de Membre du Club
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Lamine
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 84
Points : 11
Points : 11
Par défaut Probleme avec la fonction sqlsrv_query() pour php/sqlserver 2008

Tu ne penses pas que ça irai plus vite si tu corrigeais directement le code ???
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 14h59   #13
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par lemzo84 Voir le message
Tu ne penses pas que ça irai plus vite si tu corrigeais directement le code ???
non, l'erreur prouve que tu ne comprends pas ce que tu codes, et ça, ça ne corrige pas, t'as tout en main pour bien faire. Lis bien mon tout premier message
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 15h01   #14
Candidat au titre de Membre du Club
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Lamine
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 84
Points : 11
Points : 11
Par défaut Probleme avec la fonction sqlsrv_query() pour php/sqlserver 2008

J'ai suivi tes conseils et voilà le code. Si tu peux, essayes de me le corriger stp.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
<?php
# FileName="Connection_php_mysql.htm"
# Type="SQLSERVER"
# HTTP="true"
$Mainconnect = "KGR50\SQLEXPRESS";
$database_Mainconnect = "alpha_db";
$username_Mainconnect = "alpha";
$password_Mainconnect = "gamma";
 
/*
Connect to the local server using Windows Authentication and specify
the AdventureWorks database as the database in use. To connect using
SQL Server Authentication, set values for the "UID" and "PWD"
 attributes in the $connectionInfo parameter. For example:
*/
$connectionInfo = array("UID" =>$username_Mainconnect, "PWD" =>$password_Mainconnect, "Database"=>$database_Mainconnect);
 
/*$serverName = $hostname_Mainconnect;*/
$conn = sqlsrv_connect($Mainconnect,$connectionInfo );
 
if( $conn )
{
     echo "Connection established.\n";
}
else
{
     echo "Connection could not be established.\n";
     die( print_r( sqlsrv_errors(), true));
}
 
//-----------------------------------------------
// Perform operations with connection.
//-----------------------------------------------
 
/* Close the connection. */
sqlsrv_close( $conn);
 
$CNAP='$_POST[CNAP]';
$Nom='$_POST[Nom]';
$Prenom='$_POST[Prenom]';
$Sexe='$_POST[Sexe]'; 
$Date_de_Naissance='$_POST[Date_de_Naissance]';
$Date_de_Creation='$_POST[Date_de_Creation]';
 
$insertSQL="INSERT INTO registre_personnes (ID_Interne, CNAP, Nom, Prenom, Sexe, Date_de_Naissance, Date_de_Creation)
VALUES ($ID_Interne,$CNAP,$Nom,$Prenom,$Sexe,$Date_de_Naissance,$Date_de_Creation)";
 
$params=array($CNAP, $Nom, $Prenom, $Sexe, $Date_de_Naissance, $Date_de_Creation);
$query = sqlsrv_query( $conn,$insertSQL,$params);
 
 
 
?>
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 15h04   #15
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
tu fermes la connexion et ensuite tu fais la requêtes
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 15h09   #16
Candidat au titre de Membre du Club
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Lamine
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 84
Points : 11
Points : 11
Par défaut Probleme avec la fonction sqlsrv_query() pour php/sqlserver 2008

Voilà, mais rien n'est sauvegardé dans SQLserver jusqu'à présent.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
<?php
# FileName="Connection_php_mysql.htm"
# Type="SQLSERVER"
# HTTP="true"
$Mainconnect = "KGR50\SQLEXPRESS";
$database_Mainconnect = "alpha_db";
$username_Mainconnect = "alpha";
$password_Mainconnect = "gamma";
 
/*
Connect to the local server using Windows Authentication and specify
the AdventureWorks database as the database in use. To connect using
SQL Server Authentication, set values for the "UID" and "PWD"
 attributes in the $connectionInfo parameter. For example:
*/
$connectionInfo = array("UID" =>$username_Mainconnect, "PWD" =>$password_Mainconnect, "Database"=>$database_Mainconnect);
 
/*$serverName = $hostname_Mainconnect;*/
$conn = sqlsrv_connect($Mainconnect,$connectionInfo );
 
if( $conn )
{
     echo "Connection established.\n";
}
else
{
     echo "Connection could not be established.\n";
     die( print_r( sqlsrv_errors(), true));
}
 
//-----------------------------------------------
// Perform operations with connection.
//-----------------------------------------------
 
 
$CNAP='$_POST[CNAP]';
$Nom='$_POST[Nom]';
$Prenom='$_POST[Prenom]';
$Sexe='$_POST[Sexe]'; 
$Date_de_Naissance='$_POST[Date_de_Naissance]';
$Date_de_Creation='$_POST[Date_de_Creation]';
 
$insertSQL="INSERT INTO registre_personnes ( CNAP, Nom, Prenom, Sexe, Date_de_Naissance, Date_de_Creation)
VALUES ($ID_Interne,$CNAP,$Nom,$Prenom,$Sexe,$Date_de_Naissance,$Date_de_Creation)";
 
$params=array($CNAP, $Nom, $Prenom, $Sexe, $Date_de_Naissance, $Date_de_Creation);
$query = sqlsrv_query( $conn,$insertSQL,$params);
 
/* Close the connection. */
sqlsrv_close( $conn);
 
?>
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 15h10   #17
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
active la gestion des erreurs :
http://msdn.microsoft.com/en-us/library/cc296200.aspx

mais fait un echo de ta requete tu verras quelle est fausse
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 15h21   #18
Candidat au titre de Membre du Club
 
Homme Lamine
Étudiant
Inscription : juin 2011
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Lamine
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juin 2011
Messages : 84
Points : 11
Points : 11
Par défaut Probleme avec la fonction sqlsrv_query() pour php/sqlserver 2008

Merci pour ton aide. Je suis fatigué et je passe à autre chose.
Bonne journée.
lemzo84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 20h24   #19
Invité de passage
 
Homme abdelkhalek benhima
élève ingénieur d'état génie Télécommunications et Réseaux
Inscription : août 2011
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme abdelkhalek benhima
Localisation : Maroc

Informations professionnelles :
Activité : élève ingénieur d'état génie Télécommunications et Réseaux
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : août 2011
Messages : 20
Points : 1
Points : 1
Par défaut Aidez moi pour comprendre

bonsoir à tous,

J'essaye de comprendre le bout de code suivant :

sqlsrv_query ( resource $conn , string $sql [, array $params [, array $options ]] )

L'attribut params : je le comprends pas du tout

Merci pour votre aide d'avance
abd_aabd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 20h29   #20
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par abd_aabd Voir le message
bonsoir à tous,

J'essaye de comprendre le bout de code suivant :

sqlsrv_query ( resource $conn , string $sql [, array $params [, array $options ]] )

L'attribut params : je le comprends pas du tout

Merci pour votre aide d'avance
http://msdn.microsoft.com/fr-fr/libr...sql.90%29.aspx
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h50.


 
 
 
 
Partenaires

Hébergement Web