Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

15 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

[PHP] mssql_query

 
n°10551
lotus81
Profil : Jeune recrue
Posté le 27-10-2004 à 16:40:28  profilanswer
 

Bonjour,
j'ai ecrit ce code pour lancer ma procedure stocké:

<?php
$link2 = mssql_connect ("localhost", "sa", "password" );    
mssql_select_db("mabase", $link);    
set_time_limit(0);
$SQL2 = "Execute ProcedureStocke";
$rs2 = mssql_query($SQL2, $link2);  
mssql_close ($link2);
?>

j'obtient l'erreur:

Warning: mssql_query(): Query failed in c:\inetpub\wwwroot\moncode.php  
on line 6


Pourtant quand je lance la procedure stocké depuis l'analyseur de requete je n'ai pas d'erreur. de plus si  
je la lance par une page asp

Application("Connect" ) = "Provider=SQLOLEDB; Data Source=(local);  
Initial Catalog=mabase; User ID=sa; Password=password"  
Set MaConnection2 = Server.CreateObject("ADODB.Connection" )  
Server.ScriptTimeout = 1800
MaConnection2.ConnectionTimeout = 0
MaConnection2.Open Application("Connect" ),"",""  
MaConnection2.CommandTimeout = 0
MaConnection2.ProcedureStocke
MaConnection2.Close()  
Set Connection=Nothing

ca marche.
l'erreur en php provient elle du code? ou n'ai je pas installer les extension necessaire?
je precise que j'ai deja fait des tests en php  par exemple avec le code :

$exe =  
"C:\Inetpub\wwwroot\monbat.bat";
exec($exe);

mon .bat se lance sans probleme.
est j'ai bien mis l'extension mssql.dll dans C:\WINNT ainsi que dans php.ini
je souhaite lancer ma procedure stocké par une page php car j'ai deja taper du code en php et que je ne veut pas multiplier les pages ...
je ne vois pas d'ou provient l'erreur , pouvez vous m'aider
Merci par avance

n°10557
lotus81
Profil : Jeune recrue
Posté le 28-10-2004 à 11:04:16  profilanswer
 

salut  
j'ai un peu modifier le code mais ca marche toujours pas

Code :
  1. <?php
  2. $link = mssql_connect ("localhost", "sa", "password" );   
  3. mssql_select_db("mabase", $link);   
  4. set_time_limit(0);
  5. $stmt=mssql_init("ProcedureStocke",$link); 
  6. $rs = mssql_execute($stmt); 
  7. mssql_close ($link);
  8. ?>

et j'obtient l'erreur:

Code :
  1. Warning: mssql_execute(): stored procedure execution failed in c:\inetpub\wwwroot\moncode.php on line 6

quelqu'un sait pourquoi l'execution echoue?  
Merci de votre aide

n°10558
nico95
A la poursuite du SMS Staÿle
Profil : Dinosaure
Posté le 28-10-2004 à 11:12:02  profilanswer
 

Citation :

Si la procédure stockée retourne un paramètre ou une valeur, ils seront disponibles après l'appel à la fonction mssql_execute , à moins que la procédure stockée ne retourne plusieurs résultats. Dans ce cas, utilisez la fonction mssql_next_result pour passer en revue tous les résultats. Lorsque le dernier résultat aura été traité, les valeurs des paramètres de sortie et les valeurs retournées seront disponibles.


Un seul et unique résultat possible ?
 
exemple : http://www-valoria.univ-ubs.fr/Fra [...] esult.html


Message édité par nico95 le 28-10-2004 à 11:12:40
n°10559
lotus81
Profil : Jeune recrue
Posté le 28-10-2004 à 15:06:15  profilanswer
 

salut  
j'ai encore modifier mon code pour avoir plus de details sur l'erreur:  

<?php
$link2 = mssql_connect ("localhost", "sa", "password" );    
mssql_select_db("mabase", $link2);    
set_time_limit(0);
$stmt=mssql_init("ProcedureStocke",$link2);  
$rs2 = mssql_execute($stmt);
if (!$rs2)
{
$message = "<i>Une erreur est survenue : " . mssql_get_last_message() . "</i><br>";
echo $message;
}
mssql_free_statement($stmt);
unset($stmt);
mssql_close ($link2);
?>

et j'ai maintenant l'erreur suivant :

Warning: mssql_execute(): stored procedure execution failed in c:\inetpub\wwwroot\moncode.php on line 7
Une erreur est survenue : L'instruction a été arrêtée.


mais je precise que la procedure stocké se lance, commence mais ne finit pas, elle s'arrete entre deux instruction...  

(...  
INSERT INTO TABLE1
SELECT DISTINCT C1, mot
FROM  T1, T2 WHERE   T1.chaine=T2.mot ...[fixed]la procedure s'arrete

 
INSERT INTO TABLE2
SELECT  UN.C1, DEUX.C1, UN.mot, DEUX.mot, T3.COF
FROM TABLE1 UN ,  TABLE1 DEUX, T3  
WHERE  UN.CUI = T3.CUI1  AND T3.CUI2 = DEUX.CUI AND (T3.champs3 IS NOT NULL...) [/fixed]pourtant quand je lance le procedure depuis l'analyseur de requette sa marche ...  
note: j'ai une erreur "delai expire" quand je lance la requete depuis Sql server entreprise manager.  
cela peut il venir de la?  
je ne veux pas voir le résultat dans la page donc c'est inutile d'utiliser : function.mssql-next-result, non? (car j'extrait ma table de résultat au format XML)
Merci

n°10563
nico95
A la poursuite du SMS Staÿle
Profil : Dinosaure
Posté le 28-10-2004 à 16:11:54  profilanswer
 

effectivement, peut-être un problème de timeout ..
quelle est la volumétrie du 1er select ?

n°10564
lotus81
Profil : Jeune recrue
Posté le 28-10-2004 à 16:46:16  profilanswer
 

Salut  
la volumétrie?
il prend 12 seconde à l'execution environ la table T2 à peu de ligne (env. 10 lignes) par contre la table T1 en à beaucoup (env. 1 million de lignes ) mais c'est la table T3 qui en a le plus. (env. 10 millions de lignes)
en mettant  set_time_limit(0); dans le php je n'ai pas reglé le timeout? (pourquoi y a pas de probleme à l'execution avec asp et l'analyseur de requetes? et pourquoi y en a un dans l'entreprise manadger et avec mon code php?)
Merci de ton aide en tout cas ;-)


Aller à :
Ajouter une réponse