Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
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 05/10/2007, 14h12   #1
Membre confirmé
 
Arnaud
Inscription : septembre 2007
Messages : 446
Détails du profil
Informations personnelles :
Nom : Arnaud
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : septembre 2007
Messages : 446
Points : 239
Points : 239
Par défaut Que veut dire :variable ?

Bonjour,

Dans un code que je suis entrain d'analyser il y a une fonction avec une requete sql sur une table oracle
Code :
1
2
3
4
5
 
function machin(){
$query = 'SELECT truc  FROM ma table WHERE truc_id = :MYBLOBID';
(...)
}
Je me demande comment il fait pour initialiser MYBLOBID? Je n'ai trouve nul part de myblobid = quelque chose. En plus ce n'est pas une variable php sinon on aurait eu $ alors que ce que c'est?

D'avance merci...
xian21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 14h20   #2
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
C'est soit une erreur, soit cette requete est utilisé avec une couche d'abstraction pour la base de données. Essaye de vérifier.
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 14h26   #3
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
On dirait la syntaxe d'une requête SQL dans un code Delphi ?
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 14h37   #4
Membre confirmé
 
Arnaud
Inscription : septembre 2007
Messages : 446
Détails du profil
Informations personnelles :
Nom : Arnaud
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : septembre 2007
Messages : 446
Points : 239
Points : 239
Non non c'est bien du php et une base oracle

Sinon pour etre plus detaille
dans mon code j'ai deux fonctions:
la premiere ce contente de faier un select et de me renvoye un id
Code :
1
2
3
4
5
6
7
8
9
10
11
 
function recupid($a,$b,$c_id)
$sql = "SELECT mon_id from matalbe WHERE
			col1='".$a."' 
			AND col22='".$b."'  
			AND ref_id =".$c_id;
 
	$stmt = oci_parse ($conn, $sql);
	$r =oci_execute($stmt, OCI_COMMIT_ON_SUCCESS);
(...)
return $monid;
et dans la deuxieme fonction

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
function get_tsr_lob($id,$cert_id)
{
	$conn = $_SESSION['dbconn'];
	$query = 'SELECT truc  FROM ma table WHERE truc_id = :MYBLOBID';
 
	$stmt = oci_parse ($conn, $query);
	oci_bind_by_name($stmt, ':MYBLOBID', $id);
	oci_execute($stmt, OCI_DEFAULT);
	$arr = oci_fetch_assoc($stmt);
 
	$tmpfile = TEMP_DIR.$cert_id.$id.'.tsr';
	$result = $arr['TSR']->export($tmpfile);
	oci_free_statement($stmt);
 
	if($result)
	{
(...)
	}
	else
	{
		echo "3";
		add_status($cert_id,"GET","ERROR");
		exit;
	}
}
La fonction marche bien c'est juste le :myblobid que je ne comprends pas . Comment ca marche ??? :s un objet peut etre????

qu'entends tu par couche d'abstractino de la base batatax?
xian21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 14h42   #5
Membre confirmé
 
Arnaud
Inscription : septembre 2007
Messages : 446
Détails du profil
Informations personnelles :
Nom : Arnaud
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : septembre 2007
Messages : 446
Points : 239
Points : 239
Le $monid renvoye par la premiere fonction est bien le $id recu par ma seconde fonction

Code :
1
2
$info = get_token_info($a,$b,$c_id);
get_tsr_lob($info,$c_id);
xian21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 14h49   #6
Membre confirmé
 
Arnaud
Inscription : septembre 2007
Messages : 446
Détails du profil
Informations personnelles :
Nom : Arnaud
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : septembre 2007
Messages : 446
Points : 239
Points : 239
ALors en fait c'est initialise 2 lignes plus loin
Code :
oci_bind_by_name($stmt, ':MYBLOBID', $id);
merci pour les reponses
xian21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2007, 09h28   #7
Membre du Club
 
Avatar de bannik
 
Homme Christophe ASTIER
Développeur Web
Inscription : juillet 2003
Messages : 83
Détails du profil
Informations personnelles :
Nom : Homme Christophe ASTIER
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2003
Messages : 83
Points : 54
Points : 54
Bonjour,

Il s'agit d'une variable PL/SQL.
En PL/SQL d'oracle, une variable est déclaré avec : devant.

Le ociBindByName sert a ratacher une variable Oracle à une variable PHP.

Personnelement, je n'utilise cette méthode que pour récupérer un curseur oracle renvoyé par une fonction PL/SQL vers PHP, que je fetch ensuite.

ce qui donne un truc du genre:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
$curs = OCINewCursor($conn);
 
$req="begin  :res := FONCTION_PL_SQL($variablephp1,$variablephp2,:cur); end;";
	$stmt = OCIParse($conn,$req);
	OCIBindByName($stmt,"cur",&$curs,-1,OCI_B_CURSOR);
	OCIBindByName($stmt,":res",&$arg1,10000);
 
	ociexecute($stmt);
	ociexecute($curs);
 
	while (OCIFetchInto($curs,&$data)) {
                etc...
Ce qui a pour effet :
- Créer un curseur PHP
- Créer le code PL/SQL d'execution de la requete
- 'Parser' la requete
- Relier le curseur et le retour de la fonction à deux varibles PHP
- Executer la requete
- Ensuite de 'fetcher' le curseur (comme pour un tableau)
bannik est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/10/2007, 09h52   #8
Membre confirmé
 
Arnaud
Inscription : septembre 2007
Messages : 446
Détails du profil
Informations personnelles :
Nom : Arnaud
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : septembre 2007
Messages : 446
Points : 239
Points : 239
reponse claire et precise merci.
xian21 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 06h30.


 
 
 
 
Partenaires

Hébergement Web