PDA

View Full Version : [PHP] Costruisre una stringa SQL per fare l'UPDATE


bebbbo
31-03-2010, 14:13
Ciao a tutti,
ho un modulo con alcuni campi input di testo che invia tutti i valori dei campi (anche quelli nulli) ad una pagina PHP che sulla base di questi valori aggiorna un record di una tabella di un DB.

Il problema è il seguente:

La stringa SQL deve essere "UPDATE tabella SET campo1=valore1, campo2=valore2, campo3=valore3 WHERE id=stringa"

Il mio form manda quindi alla pagina php i 3 valori (valore1, valore2, valore3) che io pesco con $_GET e assegno a 3 variabili.

Devo fare in modo che se l'utente non inserisce un valore in uno o più dei 3 campi, la stringa UPDATE non contenga quel campo da aggiornare perchè altrimenti mi andrebbe a sovrascrivere un valore che invece l'utente non ha deciso di modificare.

Come posso fare?

Ero partito con una cosa del genere


$stringaSQL = "UPDATE tabella SET ";
if (!is_null($valore1) OR $valore1 != "") {
$stringaSQL = $stringaSQL . "campo1=" . $valore1 . ", ";
}
if (!is_null($valore2) OR $valore2 != "") {
$stringaSQL = $stringaSQL . "campo2=" . $valore2 . ", ";
}
if (!is_null($valore3) OR $valore3 != "") {
$stringaSQL = $stringaSQL . "campo3=" . $valore3 . ", ";
}
$stringaSQL = $stringaSQL . "WHERE id=" . $variabile;


Il problema è che cosi in ogni caso alla fine prima della condizione WHERE mi ritrovo una virgola che darebbe errore.
E poi se nessuno dei campi fosse settato cosa accadrebbe?

zuper
31-03-2010, 14:29
beh così hai 3 condizioni...

a sto punto falle tutte e 5 e risolvi tutti i problemi


tutte
1 2
1 3
2 3
nessuna


:)

bebbbo
31-03-2010, 14:41
beh così hai 3 condizioni...

a sto punto falle tutte e 5 e risolvi tutti i problemi


tutte
1 2
1 3
2 3
nessuna


:)

Cercavo un algoritmo indipendente dal numero dei campi

lupoxxx87
31-03-2010, 15:10
c'è una funzione php che prende una stringa (in questo caso l'uri) e ti restituisce un array opportunamente fatto...

per esempio se tu chiami

www.example.com?a=1&b=2&...&n=n

la funzione, di cui non ricordo il nome, ti restituisce

Array( 'a'=>1, 'b'=>2, ..., 'n'=>n );

con questo array puoi fare un for che costruisce la stringa, indipendentemente dal numero dei campi

zuper
31-03-2010, 15:22
Cercavo un algoritmo indipendente dal numero dei campi

ok pensavo fossero solo quei 3 :)

allora mi sa che devi fare un update per ogni EVENTUALE variabile :)

a meno che nn trovi la funzione per l'array di cui sopra ;9

bebbbo
31-03-2010, 16:43
c'è una funzione php che prende una stringa (in questo caso l'uri) e ti restituisce un array opportunamente fatto...

per esempio se tu chiami

www.example.com?a=1&b=2&...&n=n

la funzione, di cui non ricordo il nome, ti restituisce

Array( 'a'=>1, 'b'=>2, ..., 'n'=>n );

con questo array puoi fare un for che costruisce la stringa, indipendentemente dal numero dei campi

Sai quale è questa funzione?
Non riesco a trovarla.

lupoxxx87
31-03-2010, 17:10
parse_str ... abbastanza ovvio come nome

http://www.php.net/manual/en/function.parse-str.php

questa è anche meglio

http://www.php.net/manual/en/function.parse-url.php

bebbbo
31-03-2010, 17:15
parse_str ... abbastanza ovvio come nome

http://www.php.net/manual/en/function.parse-str.php

questa è anche meglio

http://www.php.net/manual/en/function.parse-url.php

grazie per la info!