Y A T IL DES DONNEES DANS UNE TABLE ORACLE

bfiguig
Y A T IL DES DONNEES DANS UNE TABLE ORACLE

Bonjour,

voici une partie du code pour acceder à une base de données et recuperer des informations.
$conn = oci_connect("tonlogin", "tonmotdepasse","option:lenomduschema");

$stmt = oci_parse($conn, "SELECT * FROM NOM_TABLE)

oci_execute($stmt);

$nrows_stmt = oci_fetch_all($stmt);

while (ocifetch($stmt))
{
ICI Differentes operations
}

ma question est la suivante :

je veux savoir si je recupere des lignes ou pas, alors j'essaye d'utiliser cette exepression :

"$nrows_stmt = oci_fetch_all($stmt)"

avant le while, mais le probleme c'est que des j'utilise cette expression, j'ai une erreur sur la ligne :

while (ocifetch($stmt))
et voici le message d'erreur :

Warning: ocifetch() [function.ocifetch]: ORA-01002: fetch out of sequence in C:\wamp\www\ecran\base.php on line 193
quand je met pas cette expression : $nrows_stmt = oci_fetch_all($stmt)
tout fonctionne bien.

je ne sais pas comment faire pour savoir si j'ai des données dans la table ou pas

pour info je developpe en PHP

merci de votre aide

Niroken

Hello,

En fait le problème que tu rencontres est tout à fait normal, puisque lorsque tu fais

$nrows = oci_fetch_all($statement, $results);

et
while (oci_fetch($statement)) {
  // UN TRAITEMENT
}

tu fais deux fois la même chose, grosso modo tu vas lire le résultat de sortie de ta base de données.

Le soucis, c'est que si tu le lis deux fois de suite la sortie pour le même statement, la seconde fois il n'y aura rien à lire, d'ou ton erreur.

La solution à ton problème est donc d'utiliser l'une de ces deux methodes pour lire la sortie de l execution de ton statement :
- oci_fetch avec un while
- oci_fetch_all

Bonne chance,
Niroken