IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Requête qui ne s'exécute pas [Oracle]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de Mayhem555
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut Requête qui ne s'exécute pas
    Salut à vous !

    J'ai un petit souci pour executer une requete SQL avec OCI sous PHP5.

    Voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    function executeQuery($q, $connection)
    {
    	global $db_type ;
     
    	if($db_type == "mysql")
    	{
    		$r = mysql_query($q) or die("Error ".$db_type." : Failed to execute the query :".$q) ;
    		return $r ;
    	}
    	else if($db_type == "oracle")
    	{
    		$statement = oci_parse($connection, $q) or die ("Error ".$db_type." (in ".__FILE__."): Failed to prepare the statement for query ".$q) ;
    		oci_execute ($statement, OCI_DEFAULT) or die  ("Error ".$db_type." (in ".__FILE__."): Failed to execute the statement for query ".$q);
     
    		return $statement ;
    	}
    	else 
    		exit("Error (in ".__FILE__."): Wrong database type ->".$db_type) ;
    }
    Le problème n'apparait qu'avec le SGBDR Oracle 10g XE...

    La connexion à la base se fait sans probleme avec un oci_connect(..), et le oci_parse se déroule également sans erreur.

    Par contre, lorsque j'appelle oci_execute(..) lorsque la query SQL est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = "DESC ma_table" ;
    Ça plante, avec l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Warning: oci_execute() [function.oci-execute]: ORA-00900: invalid SQL statement in /usr/local/apache2/htdocs/mon_site/db_functions.php
    et la fonction oci_error() ne me renvoie rien !!

    Par contre que si je fais un SELECT * FROM ma_table, aucune erreur et tout marche (à priori)...ce serait donc la requete DESC qu'il n'aime pas...pourtant sous SQL *Plus elle marche impec.

    Vous savez d'où cela peut venir ? Merci beaucoup pour vos lumières !

  2. #2
    Invité
    Invité(e)
    Par défaut
    salut,

    et de cette manière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $query = "DESC ma_table;" ;

  3. #3
    Membre confirmé Avatar de Mayhem555
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut
    Salut Mygale1978,

    Non, le fait de rajouter un point-virgule après DESC ma_table, ne change absolument rien....

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ok et ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = "DESC [ma_table]" ;

  5. #5
    Membre confirmé Avatar de Mayhem555
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut
    Toujours pas, de même que DESC [ma_table] ; (avec le point-virgule)....
    C'est à se tirer des balles ! (merci de ton aide)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ok je viens de trouver un lien interressant à ce sujet:

    http://bytes.com/forum/thread4810.html

    en gros "describe" ou "desc" ne sont pas reconnues comme des commandes sql standards. Il faudra donc aller chercher ces informations dans les tables contenant les metadata.

  7. #7
    Membre confirmé Avatar de Mayhem555
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut
    Merci pour ton aide Mygale1978 !

    Ce lien est très intéressant. Je vais donc jeter un oeil du côté des tables de meta-données d'Oracle, et dès que je trouve la requête qui va bien je la poste ici.

    Merci encore !

  8. #8
    Membre confirmé Avatar de Mayhem555
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 89
    Par défaut
    Resalut,

    Je suis donc parvenu à trouver la commande SQL qui marche avec Oracle 10g XE pour connaitre la liste des champs d'une table. Encore merci pour ton aide. la requête suivant marche avec l'API OCI 8 pour PHP 5.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select COLUMN_NAME from user_tab_columns WHERE TABLE_NAME = 'MA_TABLE'
    Il semble que Oracle soit sensible à la casse et qu'il considère que le nom de la colonne DOIT être en majuscule. (la même requête avec ma_table en minuscule ne renvoie aucune information, car il ne trouve rien).

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] requête qui ne s'exécute pas
    Par Souri84 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 29/11/2010, 16h25
  2. [VBA]Requête de Mise à jour de BDD qui ne s'exécute pas
    Par Playerz dans le forum VBA Access
    Réponses: 3
    Dernier message: 09/06/2008, 09h48
  3. [SQL] Requête de mise à jour qui ne s'exécute pas !
    Par zoom61 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 21/08/2007, 11h53
  4. [SQL] Requête UPDATE qui ne s'exécute pas avec PHP
    Par xplose dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 16/08/2007, 09h42
  5. [MySQL] Requête qui ne s'exécute pas MAIS qui renvoie true pour mysql_query()
    Par francis13 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/05/2007, 03h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo