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 26/01/2007, 10h17   #1
Invité de passage
 
Inscription : juin 2006
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 23
Points : 4
Points : 4
Par défaut Pb avec mssql_execute

Bonjour,
j'essaie d'executer une procédure stockée (nommée NEXTVAL) sur SQL Server.
Lorsque j'execute mon code, il génère l'erreur suivante:

Parse error: parse error, unexpected T_STRING in "mon fichier"

Voici mon code:
Code :
1
2
3
4
5
$proc=mssql_init("NEXTVAL", $conn);
				mssql_bind($proc,"RETVAL",$newPk,SQLINT4);
				$sval = $table;
				mssql_bind($proc,"@sval",$sval,SQLVARCHAR,TRUE)
				$result=mssql_execute($proc);
L'erreur a lieu sur la derniere ligne.

J'ai essayé d'autres méthodes, mais aucune ne m'a permis d'executer ma procedure.

Si quelqu'un voit ou se situe mon erreur...

Merci beaucoup.
JMsme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 10h31   #2
Membre chevronné
 
Avatar de J0r_x
 
Homme
Analyste - Programmeur
Inscription : mai 2006
Messages : 712
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Analyste - Programmeur
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2006
Messages : 712
Points : 607
Points : 607
Avant la derniere ligne fais un echo $proc; voir si toutes tes fonctions précedentes se sont bien deroulé.
__________________
Aucune aide par MP, utilisez le forum.
J0r_x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 10h31   #3
Invité de passage
 
Inscription : juin 2006
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 23
Points : 4
Points : 4
Oups, j'avais oublié un ";"

Code :
1
2
3
4
5
$proc=mssql_init("NEXTVAL");
		mssql_bind($proc,"RETVAL",$newPk,SQLINT4);
		$sval = $table;
		mssql_bind($proc,"@sval",$sval,SQLVARCHAR,TRUE);
		$result=mssql_execute($proc);
Je n'a plus l'erreur mais ma procédure ne s'execute toujours pas.

Le echo proc renvoie:

Resource id #13

En fait, mssql_execute renvoie "false". D'où qu'c'est qu'c'est que ça peut venir?
JMsme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 10h42   #4
Membre chevronné
 
Avatar de J0r_x
 
Homme
Analyste - Programmeur
Inscription : mai 2006
Messages : 712
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Analyste - Programmeur
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2006
Messages : 712
Points : 607
Points : 607
tu peux tester ca : $result=mssql_execute($proc) or die (msql_error());
__________________
Aucune aide par MP, utilisez le forum.
J0r_x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 10h43   #5
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
Citation:
Envoyé par J0r_x
tu peux tester ca : $result=mssql_execute($proc) or die (mssql_error());
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 10h46   #6
Membre chevronné
 
Avatar de J0r_x
 
Homme
Analyste - Programmeur
Inscription : mai 2006
Messages : 712
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Analyste - Programmeur
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2006
Messages : 712
Points : 607
Points : 607
Je suis pas sur qu'il y'ait deux 's'.
__________________
Aucune aide par MP, utilisez le forum.
J0r_x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 10h46   #7
Invité de passage
 
Inscription : juin 2006
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 23
Points : 4
Points : 4
Avec le "or die...", php ne va pas plus loin, mais n'affiche aucun message d'erreur. C'est ce que mssql_error est censé faire non?

C'est le même résultat avec un ou deux "s".
JMsme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 10h48   #8
Membre chevronné
 
Avatar de J0r_x
 
Homme
Analyste - Programmeur
Inscription : mai 2006
Messages : 712
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Analyste - Programmeur
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : mai 2006
Messages : 712
Points : 607
Points : 607
normalement il doit te renvoyer une erreur si la requete se passe mal, vu que tu n'as pas de message c'est que apparement ça se passe bien, aprés je ne connaît pas trop sql server donc je peux pas t'aider plus
__________________
Aucune aide par MP, utilisez le forum.
J0r_x est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 10h49   #9
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
Autant pour moi
J'avais toujours pensé que c'était cela (heuresement que j'en ai jamais eu besoin :p)

P.s : après une recherche, les deux seraient identiques ? :o
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 10h51   #10
Invité de passage
 
Inscription : juin 2006
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 23
Points : 4
Points : 4
Merci quand même pour votre aide

Mais j'imagine que la requête n'est pas executée puisque la valeur de retour est "false".

Je continue de m'acharner sur cette mer... euh ce délicat problème.
JMsme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 10h56   #11
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
As tu tester ta requête directement dans ta BDD ? (avec des valeurs test).
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 11h06   #12
Invité de passage
 
Inscription : juin 2006
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 23
Points : 4
Points : 4
En fait, je ne sais pas exactement quelle requête est créée par les fonctions mssql donc je n'ai pas pu tester.

Mais je sais que la procédure fonctionne.

Dans un premier temps, j'avais essayé ainsi:

Code :
1
2
3
4
5
6
7
8
9
$sql =
		"BEGIN
		DECLARE @name varchar,
				@current int
		execute @current=NEXTVAL ".$table."
		SELECT @current OUTPUT
		END";
 
		$newPkResult = mssql_query($sql,$numero);
Dans ce cas, la requête est bonne, mais ne s'exécute pas non plus.
JMsme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 11h15   #13
Invité de passage
 
Inscription : juin 2006
Messages : 23
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 23
Points : 4
Points : 4
Ca y est!
J'ai réussi!

J'ai repris mon code précédent, et j'ai enlevé "$numero" dans mssql_query, ça fonctionne bien.

Par contre, je ne sais pas pourquoi je ne dois pas le mettre dans ce cas, alors que dans tous mes autres appels à cette fonction, il y est.

Merci pour votre aide.
Et a bientôt pour de nouvelles aventures!
JMsme est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web