OVH Cloud OVH Cloud

probleme php4.3.9 - oracle8

1 réponse
Avatar
Nicolas ROBERT
Bonjour,

J'essaye de tester un script php qui se connecte à une base Oracle distante
(sur un autre poste du réseau local).
Mon script est le suivant:

#!/usr/local/bin/php
<?
$conn = ocilogon("user","pass","mabase");
$query = "select count(*) from suivi_agents;";

if ($parse=ociparse($conn,$query)== false){
echo "requete mal formee";
return false;
}
//echo "resultat parse: ".$parse;

$result= ociexecute($parse);
echo "resultat : ".$result;
?>

J'éxécute mon script en ligne de commande.
J'obtiens l'erreur suivante:

PHP Warning: ociexecute(): supplied argument is not a valid OCI8-Statement
reso
urce in D:\Apache Group\Apache\htdocs\scripts
php\synchroniort\test\test_personn
e_oracle.php on line 20

La ligne 20 correspond à la fonction ociexecute. Ma requete est bonne
puisque j'arrive à la passer avec mon client Oracle. Mes paramètres de
connexion me semblent bon également.

Quelqu'un a-t-il une idée qui puisse me permettre de résoudre ce problème ?
D'avance merci

Nicolas ROBERT

1 réponse

Avatar
Olivier Miakinen

if ($parse=ociparse($conn,$query)== false){


Aaargh ! Tu es sûr que le « = » est plus prioritaire que le « == » ?

Voyons :
http://www.php.net/manual/fr/language.operators.php#language.operators.precedence

<cit.>
Associativité Opérateurs
non-associative new
droite [
non-associatif ++ --
non-associatif ! ~ - (int) (float) (string) (array) (object) @
gauche * / %
gauche + - .
gauche << >>
non-associatif < <= > > non-associatif == != === != gauche &
gauche ^
gauche |
gauche &&
gauche ||
gauche ? :
droite = += -= *= /= .= %= &= |= ^= <<= >> gauche and
gauche xor
gauche or
gauche ,
</cit.>

Eh non, c'est l'inverse. Donc ton test équivaut à :
if ($parse = (ociparse($conn,$query) == false)) {

... et $parse vaut « false » lorsque la requète réussit.

//echo "resultat parse: ".$parse;


C'est dommage que tu aies commenté cette ligne, tu l'aurais vu.

$result= ociexecute($parse);


Et ça c'est normal que ça échoue : ociexecute(false) !

Quelqu'un a-t-il une idée qui puisse me permettre de résoudre ce problème ?


Oui : toujours mettre des parenthèses aussitôt que tu as plus d'un
opérateur :
if (($parse = ociparse($conn,$query)) == false) {


--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.