usando l'isset in quel modo non capisco come possa darti il notice, posta le righe interessate.
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Ho modificato con il codice di @fdisotto, funziona tutto in modo corretto
Grazie mille a tutti per le risposte
Sito Modellismo (Non ancora completo)
Scusate, ma io vorrei (con il massimo rispetto per le opinioni di tutti) spezzare una lancia a favore della chiocciola, perchè altrimenti passa il messaggio, a mio modesto parere sbagliato, che bisogna evitarla peggio della peste ..... io credo sia più corretto dire che bisogna usarla con estrema parsimonia e dopo aver ponderato bene la logica dello script .... ma che in alcune situazioni sia lecito e consentito usarla, anche perchè se è stata inserita nella semantica del linguaggio, una ragione ci sara.
Facciamo un esempio, se devo scrivere una query con delle variabili di cui non sono certo siano settate o meno dovrei fare cosi:
ora, quanti farebbero realmente cosi? chi è senza peccato scagli la prima pietra, io credo che qualsiasi programmatore serio, dopo aver verifacato che non vi siano problemi particolari legati alla logica del programma, non si metterebbe il minimo scrupolo a usare la @ risparmiando sia codice che controlli.Codice PHP:
$query = "INSERT INTO tabella (campo1,campo2,campo3,campo4,campo5,campo6,campo7,campo8,campo9,campo10) ";
$query .="VALUES (";
$query .= " '".(isset($variabile1)) ? $variabile1 : "" ."', ";
$query .= " '".(isset($variabile2)) ? $variabile2 : "" ."', ";
$query .= " '".(isset($variabile3)) ? $variabile3 : "" ."', ";
$query .= " '".(isset($variabile4)) ? $variabile4 : "" ."', ";
$query .= " '".(isset($variabile5)) ? $variabile5 : "" ."', ";
$query .= " '".(isset($variabile6)) ? $variabile6 : "" ."', ";
$query .= " '".(isset($variabile7)) ? $variabile7 : "" ."', ";
$query .= " '".(isset($variabile8)) ? $variabile8 : "" ."', ";
$query .= " '".(isset($variabile9)) ? $variabile9 : "" ."', ";
$query .= " '".(isset($variabile10)) ? $variabile10 : "" ."', ";
$query .=")";
Il problema è che la teoria è la storia di un viaggio su un infinito rettilineo dorato, con una macchina sportiva appena revisionata e in un pomeriggio di primavera .... poi però nella pratica, ti ritrovi a guidare una subaru-baracca sulla Salerno-Reggio Calabria, in una notte di tempesta durante un terremoto ..... e in quei momenti ringrazi il dio Rasmus per aver creato la @
Il calcolatore è straordinariamente veloce, accurato e stupido.
L'uomo è incredibilmente lento, impreciso e creativo.
L'insieme dei due costituisce una forza incalcolabile.
(Albert Einstein)
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Il messaggio che dovrebbe passare e' proprio quello: che bisogna evitarla peggio della peste. Non c'e' un caso reale in cui nascondere un errore invece di gestirlo e' la soluzione corretta.
Per il resto nessun programmatore serio, ma anche solo vagamente competente, scriverebbe mai nulla di lontanamente simile a questo orrore:
Codice PHP:
$query = "INSERT INTO tabella (campo1,campo2,campo3,campo4,campo5,campo6,campo7,campo8,campo9,campo10) ";
$query .="VALUES (";
$query .= " '".(isset($variabile1)) ? $variabile1 : "" ."', ";
$query .= " '".(isset($variabile2)) ? $variabile2 : "" ."', ";
$query .= " '".(isset($variabile3)) ? $variabile3 : "" ."', ";
$query .= " '".(isset($variabile4)) ? $variabile4 : "" ."', ";
$query .= " '".(isset($variabile5)) ? $variabile5 : "" ."', ";
$query .= " '".(isset($variabile6)) ? $variabile6 : "" ."', ";
$query .= " '".(isset($variabile7)) ? $variabile7 : "" ."', ";
$query .= " '".(isset($variabile8)) ? $variabile8 : "" ."', ";
$query .= " '".(isset($variabile9)) ? $variabile9 : "" ."', ";
$query .= " '".(isset($variabile10)) ? $variabile10 : "" ."', ";
$query .=")";
Se c'è il problema di non far vedere errori basta usare semplicemente
Altrimenti se ci sono eccezioni nello script questi vanno corretti e sicuramente non riempiendo lo script di isset messi lì a caso.Codice PHP:
ini_set('display_errors', 0);
error_reporting(0);
La query sopra era più sensata se scritta tipo
Bisogna sempre valutare i casi, una soluzione non è mai adatta a tutti i casi.Codice PHP:
$variabile1 = isset($_POST['var1']) ? $_POST['var1'] : '';
$variabile2 = isset($_POST['var2']) ? $_POST['var1'] : '';
//ecc....
$query = "INSERT INTO tabella (campo1,campo2,campo3,campo4,campo5,campo6,campo7,campo8,campo9,campo10) ";
$query .="VALUES (";
$query .= " '$variabile1', ";
$query .= " '$variabile2', ";
//ecc
$query .=")";
La query sopra non e' sensata in nessuna variante che preveda prendere dei dati da POST e sbatterli in una query cosi' come sono, senza una validazione, senza un controllo e soprattutto senza usare un prepared statement.