Newsgroup: it.comp.www.php
Titolo: Parametri multipli ad una function...

Ciao a tutti,
Mi stavo chiedendo se esiste (sicuramente sě) un modo  per dichiarare
una funzione che accetti in input un numero di parametri variabili. Mi
spiego : la funzione ibase_query() vuole come primo parametro il db
handle, come secondo la stringa SQL mentre dopo di questo parametro
possono esserci un tot di altri parametri che corrispondono ai ? nella
stringa SQL... Per esempio :
ibase_query($dbh, "SELECT * FROM TABELLA WHERE CAMPO1 = ? AND CAMPO2 =
?", $CAMPO1, $CAMPO2);
Come posso far sě da crare un funzione che si comporti come questa sopra
?
Thanx,
RaSca
http://web.tiscali.it/rascasoft

 wrote in 
news:3C1DDCAC...@tiscalinet.it
:

2 modi:
1. dichiarare + funzioni uguali con numeri di parametri diversi 
(limitato!!)
2. passargli un array!
in questo modo con each() fetchi tutti i valori dell'array.
ciao

 in questo modo con each() fetchi tutti i valori dell'array.
Il punto perň č questo, se io nella mia funzione devo utilizzare questi
parametri per passarli ad un'altra funzione (guardacaso ibase_query)
come faccio ? 
metti che io faccio :
$param[0] = valore0;
$param[1] = valore1;
$ssql = "SELECT * FROM TABELLA WHERE CAMPO0 = ? AND CAMPO1 = ?"
Poi passo il tutto ad una funzione cosě :
esegui_query($ssql, $param);
all'interno di questa  avrň qualcosa tipo :
ibase_query ($dbh, $ssql, $param)
Che perň non funziona, in quanto lui si aspetta 2 parametri dopo $ssql e
l'array pur contenendo i 2 valori dei miei parametri viene visto come
singola variabile.
Nella spiegazione di ibase_query i parametri dopo i primi 2 vengono
indicati come bind_args...Come li devo trattare ?
Grazie,
RaSca
http://web.tiscali.it/rascasoft

 indicati come bind_args...Come li devo trattare ?
non capivo come mai decidevi di trattarli come bind e non come 
stringasql...
poi infatti, nel manuale ho trovato:
Nota: Sebbene questa funzione supporti il binding di variabile sui 
"segnaposto" dei parametri, non ha molto senso usare questa possibilità con 
essa.
potresti, per comodità, dire
$ssql = "SELECT * FROM TABELLA"
e nel $param associare nomecampo e valore ('CAMPO0','VALORE0')
poi, all'interno della funzione, modifichi la stringa fetchando l'array e 
concatenando WHERE e AND alla stringa SQL, indicando il nome del campo e il 
valore da matchare. dopodiché NON passi variabili bind.
ok?
ciao

 ok?
Oh, ho capito quello che intendi, ma il problema è che ho la necessità
di fare il Bind e ti spiego perchè (se ci riesco ;): Se in interbase
vuoi inserire un campo blob, l'unica maniera che hai è quella di storare
l'id del blob (che ti devi creare - e ci riesco senza problemi -) in una
variabile e passarlo alla procedure ibase_query come parametro bind, in
questo modo da ad interbase il link del blob ed il server SQL più bello
del mondo ci butta dentro il valore giusto...in pratica :
ibase_query($dbh, "UPDATE TABELLA SET CAMPOBLOB = ? WHERE CAMPOCHIAVE =
?", $blob_id, $chiave);
 
è totalmente diversa da :
ibase_query($dbh, "UPDATE TABELLA SET CAMPOBLOB = " . $blob_id . " WHERE
CAMPOCHIAVE = " . $chiave);
Anzi, nel primo caso tutto funziona, mentre nel secondo ricevi un
errore, questo perchè nel primo caso ad interbase viene consegnato una
sorta di "link" al blob da storare, mentre nel secondo tutto è
semplicemente una stringa...
Come spero avrai capito il fetching dell'array per i parametri diventa
un bel casino, in quanto l'unica via che ho scoperto per far funzionare
ste benedette funzioni è di usare variabili bind che però non riesco ad
applicare a funzioni standard di PHP...
Sono un casinaro eh ?
Grazie...
RaSca
http://web.tiscali.it/rascasoft

 wrote in
news:3C1E0789...@tiscalinet.it
: 

??? non riesci a farlo senza bind?
con mysql riesco, non penso che sia diverso per ibase!!
dovrebbe essere:
$content=fread(...);
$sql="insert into tabella (campoblob) values ('".addslashes($content)."')";
e l'estrazione normale, come un campo qualsiasi...
ti ritrovi dopo la fetch con un campo binario dentro l'array.
ciao

 ti ritrovi dopo la fetch con un campo binario dentro l'array.
A prescindere dal fatto che fread a me non serve in quanto il valore del
campo blo lo registro da una TEXTAREA, ti assicuro che nella maniera da
te indicata ibase va in errore...
In ogni caso grazie per il tuo prezioso aiuto.
RaSca
http://web.tiscali.it/rascasoft

Si può fare overloading sulle funzioni in php ?
J

 wrote in
news:3C1E1B73...@tiscalinet.it
: 

ma dalla textarea riescono ad inviarti valori binari? in che modo?
boh... non conosco ibase, salvo che per sentito dire.
quindi non saprei proprio dirti!
ciao

 quindi non saprei proprio dirti!
Non riesco a capire cosa intendi per valori binari...Dalla TEXTAREA
prendo un testo che registro nel blob, gli accapo sono i caratteri \n
,ma sinceramente di binario ci vedo poco in queste cose...
Mi spieghi ?
RaSca
http://web.tiscali.it/rascasoft

 wrote in 
news:3C1F0304...@tiscalinet.it
:

boh, ti ripeto... non conosco interbase.
i valori binari che intendo sono quelli da mettere dentro "binary large 
object", cioè il campo che hai definito.
in genere, per campi di testo, c'è il type "text" che è come un blob però 
specifico per il testo.
in questo caso, essendo un testo preso da un form, generalmente si può 
specificare DIRETTAMENTE nell'sql (senza addslashes?) il campo da passare.
ma se, come dici, con ibase non si può...
ciao