Escape campi form recuperati tramite POST

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Salve raga,
mi dareste una mano a capire come effettuare l'escape dei caratteri con php.

In effetti invio i dati tramite una form ad una pagina che si chiama salva.php,
se in una stringa è presente un carattere tipo un apice la query fallisce.

Ad esempio se scrivo manodopera la query inserisce correttamente i campi nel db, se scrivo mano d'opera la query fallisce per via dell'apice

Questa la query

PHP:
<?php
// inserisco le credenziali di accesso
$host = "";
$user = "";
$pass = "";
$database = "";

// mi connetto al DBMS
$myconn = mysql_connect($host, $user, $pass) or die('Errore...');

//Mi connetto al database
mysql_select_db($database, $myconn) or die('Errore...');

$veicolo = $_POST['veicolo'];
$targa = $_POST['targa']; 
$km = $_POST['km'];
$telaio = $_POST['telaio']; 
$cliente = $_POST['cliente']; 
$indirizzo = $_POST['indirizzo']; 
$piva = $_POST['piva']; 
$tel = $_POST['tel']; 
$itr1 = $_POST['itr1'];
$itr2 = $_POST['itr2'];
$itr3 = $_POST['itr3'];
$for1 = $_POST['for1']; 
$for2 = $_POST['for2'];
$for3 = $_POST['for3'];
$imp_1 = $_POST['imp_1']; 
$imp_2 = $_POST['imp_2']; 
$imp_3 = $_POST['imp_3'];  
$totale = $_POST['totale']; 
$n_tecnico = $_POST['n_tecnico']; 
$data = $_POST['data'];   

//Preparo la query di inserimento
$sql = "INSERT INTO `Commesse` (`veicolo`,`targa`,`km`,`telaio`,`cliente`,`indirizzo`,`piva`,`tel`,`itr1`,`itr2`,`itr3`,`for1`,`for2`,`for3`,`imp_1`,`imp_2`,`imp_3`,`totale`,`n_tecnico`,`data`)
VALUES 
(UPPER('$veicolo'),UPPER('$targa'),'$km',UPPER('$telaio'),UPPER('$cliente'),UPPER('$indirizzo'),'$piva','$tel',UPPER('$itr1'),UPPER('$itr2'),UPPER('$itr3'),UPPER('$for1'),UPPER('$for2'),UPPER('$for3'),$imp_1, $imp_2, $imp_3, $totale,UPPER('$n_tecnico'),STR_TO_DATE('$data', '%d/%m/%Y'))";


// Lanciamo la query:
$result = mysql_query($sql);

// controllo l'esito
if (!$result) {
	die("Errore nella query $sql: " . mysql_error());
}

else
echo 'I dati da te inseriti sono stati correttamente registrati'; 
echo '</br>';
echo "<a href=\"index.php\">Home</a>"; 


// E chiudiamo la connessione a MySQL
mysql_close();

?>

Mi aiutate ?
 
Ultima modifica di un moderatore:
Ciao, puoi provare cosi
PHP:
foreach ($_POST as $key => $value) {
    $_POST[$key] = mysql_real_escape_string($value);
}
mettilo prima della dichiarazione delle variabili
ps
abbandona mysql e passa a mysqli
 
Ciao, puoi provare cosi
PHP:
foreach ($_POST as $key => $value) {
    $_POST[$key] = mysql_real_escape_string($value);
}
mettilo prima della dichiarazione delle variabili
ps
abbandona mysql e passa a mysqli

Ciao criric,
ho provato la soluzione da te proposta, adesso il problema è un altro,
la query non va in errore, ma se scrivo ad esempio "MANO D'OPERA"
nel db viene registrato solo "MANO D" in pratica viene troncato tutto
quello scritto dopo l'apostrofo. :(

PHP:
<?php
// inserisco le credenziali di accesso
$host = "";
$user = "";
$pass = "";
$database = "";

// mi connetto al DBMS
$myconn = mysql_connect($host, $user, $pass) or die('Errore...');

//Mi connetto al database
mysql_select_db($database, $myconn) or die('Errore...');

//Effettuo l'Escape dei campi _POST 

foreach ($_POST as $key => $value) {
    $_POST[$key] = mysql_real_escape_string($value);
}

$veicolo = $_POST['veicolo'];
$targa = $_POST['targa']; 
$km = $_POST['km'];
$telaio = $_POST['telaio'];

ecc. ecc.
 
Ultima modifica di un moderatore:
Strano e se provi cosi ?
PHP:
foreach ($_POST as $key => $value) {
    $_POST[$key] = addslashes($value);
}
 
Buongiorno criric,
purtroppo anche così mi tronca sempre tutto quello dopo l'apostrofo ...

Sto impazzendo :(
 
Stampa e posta la query
PHP:
echo $sql;
magari riusciamo a capire meglio
 
Eccola ...

PHP:
INSERT INTO `Commesse` (`veicolo`,`targa`,`km`,`telaio`,`cliente`,`indirizzo`,`piva`,`tel`,`itr1`,`itr2`,`itr3`,`itr4`,`itr5`,`itr6`,`itr7`,`itr8`,`itr9`,`itr10`,`itr11`,`itr12`,`itr13`,`itr14`,`itr15`,`for1`,`for2`,`for3`,`for4`,`for5`,`for6`,`for7`,`for8`,`for9`,`for10`,`for11`,`for12`,`for13`,`for14`,`for15`,`imp_1`,`imp_2`,`imp_3`,`imp_4`,`imp_5`,`imp_6`,`imp_7`,`imp_8`,`imp_9`,`imp_10`,`imp_11`,`imp_12`,`imp_13`,`imp_14`,`imp_15`,`totale`,`n_tecnico`,`data`) VALUES (UPPER('ESCAPE'),UPPER('ES123CA'),'125000',UPPER('12345678999'),UPPER('pROVA ESCAPE'),UPPER('VIA PROVA'),'000000000000','3333333333',UPPER('MANO D\'OPERA'),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER('PROVA \' ESCAPE'),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),UPPER(''),25, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 25,UPPER('PROVA ESCAPE'),STR_TO_DATE('28/05/2014', '%d/%m/%Y')) I dati da te inseriti sono stati correttamente registrati
 
prova a sostituire gli apici singoli con i doppi
da
PHP:
VALUES 
(UPPER('$veicolo'),UPPER('$targa'),
a
PHP:
VALUES 
(UPPER(\"$veicolo\"),UPPER(\"$targa\"),
così per tutti i campi, evitiamo intanto che mysql possa confondersi
ps
devi per forza mettere lo slash perchè inizi la query con l'apice doppio
$sql = "
 
Niente da fare

Codice:
INSERT INTO `Commesse` (`veicolo`,`targa`,`km`,`telaio`,`cliente`,`indirizzo`,`piva`,`tel`,`itr1`,`itr2`,`itr3`,`itr4`,`itr5`,`itr6`,`itr7`,`itr8`,`itr9`,`itr10`,`itr11`,`itr12`,`itr13`,`itr14`,`itr15`,`for1`,`for2`,`for3`,`for4`,`for5`,`for6`,`for7`,`for8`,`for9`,`for10`,`for11`,`for12`,`for13`,`for14`,`for15`,`imp_1`,`imp_2`,`imp_3`,`imp_4`,`imp_5`,`imp_6`,`imp_7`,`imp_8`,`imp_9`,`imp_10`,`imp_11`,`imp_12`,`imp_13`,`imp_14`,`imp_15`,`totale`,`n_tecnico`,`data`) VALUES (UPPER("ESCAPE"),UPPER("ES133CA"),'533797',UPPER("1212121212"),UPPER("d\'ambrosio elena"),UPPER("via d\'amore"),'000000000000','3333333333',UPPER("MANO D\'OPERA"),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER("PROVA \' ESCAPE"),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),UPPER(""),25, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 25,UPPER("PROVA ESCAPE"),STR_TO_DATE('29/05/2014', '%d/%m/%Y'))I dati da te inseriti sono stati correttamente registrati

PHP:
VALUES 
(UPPER(\"$veicolo\"),UPPER(\"$targa\"),'$km',UPPER(\"$telaio\"),UPPER(\"$cliente\"),UPPER(\"$indirizzo\"),'$piva','$tel',UPPER(\"$itr1\"),UPPER(\"$itr2\"),UPPER(\"$itr3\"),UPPER(\"$itr4\"),UPPER(\"$itr5\"),UPPER(\"$itr6\"),UPPER(\"$itr7\"),UPPER(\"$itr8\"),UPPER(\"$itr9\"),UPPER(\"$itr10\"),UPPER(\"$itr11\"),UPPER(\"$itr12\"),UPPER(\"$itr13\"),UPPER(\"$itr14\"),UPPER(\"$itr15\"),UPPER(\"$for1\"),UPPER(\"$for2\"),UPPER(\"$for3\"),UPPER(\"$for4\"),UPPER(\"$for5\"),UPPER(\"$for6\"),UPPER(\"$for7\"),UPPER(\"$for8\"),UPPER(\"$for9\"),UPPER(\"$for10\"),UPPER(\"$for11\"),UPPER(\"$for12\"),UPPER(\"$for13\"),UPPER(\"$for14\"),UPPER(\"$for15\"),$imp_1, $imp_2, $imp_3, $imp_4, $imp_5, $imp_6, $imp_7, $imp_8, $imp_9, $imp_10, $imp_11, $imp_12, $imp_13, $imp_14, $imp_15, $totale,UPPER(\"$n_tecnico\"),STR_TO_DATE('$data', '%d/%m/%Y'))";
 
la query è corretta
hai provato ad inserirla direttamente in phpmyadmin?
 
La vecchia query prima della modifica inseriva correttamente i dati nel database esempio
nel database era scritto "MANO D'OPERA", in fase di lettura invece nel form veniva scritto "MANO D"

La query che invece mi hai fatto modificare
PHP:
VALUES 
(UPPER(\"$veicolo\"),UPPER(\"$targa\"),
inserisce nel database direttamente solo "MANO D" troncando tutto il resto !!!
 
torna alla vecchia e posta il codice di come la leggi
 
torna alla vecchia e posta il codice di come la leggi

Ecco visualizza.php

PHP:
<?php
session_start();
$_SESSION['id'] = $_REQUEST[id];
echo "La tua sessione " . $_SESSION ['id'];
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="../dataentry/css/css.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="../dataentry/css/ui-lightness/jquery-ui-1.10.4.css"></link>
<script type="text/javascript" src="js/somma.js"></script>
<script type="text/javascript" src="js/datapicker.js"></script>
<script type="text/javascript" src="js/jquery-1.10.2.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.10.4.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-i18n.js"></script>
<title>Commessa Officina</title>
</head>
<body>
<script type="text/javascript">
$(function(){
     $.datepicker.setDefaults( $.datepicker.regional[ "it" ] );
     $('.datepicker').datepicker();
});
</script>
<div id="container"> <!-- apro il div container -->
<?php
// inserisco le credenziali di accesso
$host = "";
$user = "";
$pass = "";
$database = "";

// mi connetto al DBMS
$myconn = mysql_connect($host, $user, $pass) or die('Errore...');

//Mi connetto al database
mysql_select_db($database, $myconn) or die('Errore...');



//Preparo la query di visualizzazione
$sql = "SELECT * , DATE_FORMAT(Commesse.data,'%d/%m/%Y') as data FROM Commesse WHERE id='$_SESSION[id]'";



// Lanciamo la query:
$result = mysql_query($sql);


 
if (mysql_num_rows($result) == 0)
 {
 echo "Non ho trovato niente con questo id: ".$_SESSION['id'];
 echo "<br />";
 echo "La query eseguita è: ".$sql;
 exit;
 }

$dati = mysql_fetch_assoc ($result);

foreach ($_POST as $key => $value) {
    $_POST[$key] = addslashes($value);
}

$id = $dati ['id'];
$veicolo = $dati['veicolo'];
$targa = $dati['targa']; 
$km = $dati['km'];
$telaio = $dati['telaio']; 
$cliente = $dati['cliente']; 
$indirizzo = $dati['indirizzo']; 
$piva = $dati['piva']; 
$tel = $dati['tel']; 
$itr1 = $dati['itr1'];
$itr2 = $dati['itr2'];
$itr3 = $dati['itr3'];
$itr4 = $dati['itr4']; 
$itr5 = $dati['itr5']; 
$itr6 = $dati['itr6'];
$itr7 = $dati['itr7']; 
$itr8 = $dati['itr8'];
$itr9 = $dati['itr9']; 
$itr10 = $dati['itr10'];
$itr11 = $dati['itr11'];
$itr12 = $dati['itr12']; 
$itr13 = $dati['itr13'];
$itr14 = $dati['itr14'];
$itr15 = $dati['itr15'];
$for1 = $dati['for1']; 
$for2 = $dati['for2'];
$for3 = $dati['for3'];
$for4 = $dati['for4'];
$for5 = $dati['for5'];
$for6 = $dati['for6'];
$for7 = $dati['for7']; 
$for8 = $dati['for8']; 
$for9 = $dati['for9']; 
$for10 = $dati['for10']; 
$for11 = $dati['for11']; 
$for12 = $dati['for12']; 
$for13 = $dati['for13']; 
$for14 = $dati['for14']; 
$for15 = $dati['for15']; 
$imp_1 = $dati['imp_1']; 
$imp_2 = $dati['imp_2']; 
$imp_3 = $dati['imp_3']; 
$imp_4 = $dati['imp_4']; 
$imp_5 = $dati['imp_5']; 
$imp_6 = $dati['imp_6']; 
$imp_7 = $dati['imp_7']; 
$imp_8 = $dati['imp_8']; 
$imp_9 = $dati['imp_9']; 
$imp_10 = $dati['imp_10']; 
$imp_11 = $dati['imp_11']; 
$imp_12 = $dati['imp_12']; 
$imp_13 = $dati['imp_13']; 
$imp_14 = $dati['imp_14']; 
$imp_15 = $dati['imp_15']; 
$totale = $dati['totale']; 
$n_tecnico = $dati['n_tecnico']; 
$data = $dati['data'];   

// controllo l'esito
if (!$result) {
	die("Errore nella query $sql: " . mysql_error());
}

// E chiudiamo la connessione a MySQL
mysql_close();

?>

<FORM name InserisciCommessaOfficina method="POST" action="http://www.miosito.com/Ricerca.php">
<fieldset>
  <legend>Anagrafica Cliente</legend>
  <div id="anagrafica">
    <table>
      <tr>
        <td width="99">Id</td>
        <td width="495"><input name="id" disabled="disabled" id="id" value='<?php echo $id ?>' size="10" readonly="readonly"></td>
        <td width="99">Data  gg/mm/aaaa</td>
        <td><input type="text"  name="data" class="datepicker" required="required" id="data" value='<?php echo $data ?>'></td>
        </tr>
      <tr>
        <td>Cliente</td>
        <td><input name="cliente" class="uppercase" id="cliente" value='<?php echo $cliente ?>'></td>
        </tr>
      <tr>
        <td>Indirizzo</td>
        <td><input name="indirizzo" class="uppercase" id="indirizzo" value='<?php echo $indirizzo ?>'></td>
        </tr>
      <tr>
        <td>Partita Iva</td>
        <td><input name="piva" class="uppercase" id="piva" maxlength="12" value='<?php echo $piva ?>'></td>
        </tr>
      <tr>
        <td>Telefono</td>
        <td><input name="tel" class="uppercase" id="tel" value='<?php echo $tel ?>'></td>
        </tr>
    </table>
</fieldset>

<fieldset>
  <legend>Anagrafica Vettura</legend>
    <table>
      <td width="99">Veicolo</td>
        <td width="145"><input name="veicolo" class="uppercase" id="veicolo" value='<?php echo $veicolo ?>'></td>
        </tr>
      <tr>
        <td>Targa</td>
        <td><input name="targa" required="required" class="uppercase" id="targa" value='<?php echo $targa ?>'></td>
        </tr>
      <tr>
        <td>Telaio</td>
        <td><input name="telaio" class="uppercase" id="telaio" value='<?php echo $telaio ?>'></td>
        </tr>
      <tr>
        <td>Km</td>
        <td width="495"><input name="km" class="uppercase" id="km" value='<?php echo $km ?>'></td>
        <td width="99">Nome tecnico</td>
        <td width="278"><input name="n_tecnico" required="required" class="uppercase" id="n_tecnico" value='<?php echo $n_tecnico ?>'></td>
        </tr>
    </table>
</fieldset>
<fieldset>
<legend>Interventi di manutenzione veicolo</legend>
<table>
        <td>Intervento</td>
        <td>Fornitore</td>
      	<td>Importo</td>
        </tr>
      <tr>
        </tr>
      <tr>
        <td><input name="itr1" class="uppercase" id="itr1" size="40" value='<?php echo $itr1 ?>'></td>
        <td><input name="for1" class="uppercase" id="for1" size="25" value='<?php echo $for1 ?>'></td>
        <td><input name="imp_1" id="imp_1" size="10" value='<?php echo $imp_1 ?>'></td>
        </tr>
      <tr>
        <td><input name="itr2" class="uppercase" id="itr2" size="40" value='<?php echo $itr2 ?>'></td>
        <td><input name="for2" class="uppercase" id="for2" size="25" value='<?php echo $for2 ?>'></td>
        <td><input name="imp_2" id="imp_2" size="10" value='<?php echo $imp_2 ?>'></td>
        </tr>
        
        <tr>
        <td><input name="itr3" class="uppercase" id="itr3" size="40" value='<?php echo $itr3 ?>'></td>
        <td><input name="for3" class="uppercase" id="for3" size="25" value='<?php echo $for3 ?>'></td>
        <td><input name="imp_3" id="imp_3" size="10" value='<?php echo $imp_3 ?>'></td>
        </tr>
        
        <tr>
        <td><input name="itr4" class="uppercase" id="itr4" size="40" value='<?php echo $itr4 ?>'></td>
        <td><input name="for4" class="uppercase" id="for4" size="25" value='<?php echo $for4 ?>'></td>
        <td><input name="imp_4" id="imp_4" size="10" value='<?php echo $imp_4 ?>'></td>
        </tr>
        
        <tr>
        <td><input name="itr5" class="uppercase" id="itr5" size="40" value='<?php echo $itr5 ?>'></td>
        <td><input name="for5" class="uppercase" id="for5" size="25" value='<?php echo $for5 ?>'></td>
        <td><input name="imp_5" id="imp_5" size="10" value='<?php echo $imp_5 ?>'></td>
        </tr> 
        
        <tr>
        <td><input name="itr6" class="uppercase" id="itr6" size="40" value='<?php echo $itr6 ?>'></td>
        <td><input name="for6" class="uppercase" id="for6" size="25" value='<?php echo $for6 ?>'></td>
        <td><input name="imp_6" id="imp_6" size="10" value='<?php echo $imp_6 ?>'></td>
        </tr>
        
        <tr>
        <td><input name="itr7" class="uppercase" id="itr7" size="40" value='<?php echo $itr7 ?>'></td>
        <td><input name="for7" class="uppercase" id="for7" size="25" value='<?php echo $for7 ?>'></td>
        <td><input name="imp_7" id="imp_7" size="10" value='<?php echo $imp_7 ?>'></td>
        </tr>    
        
        <tr>
        <td><input name="itr8" class="uppercase" id="itr8" size="40" value='<?php echo $itr8 ?>'></td>
        <td><input name="for8" class="uppercase" id="for8" size="25" value='<?php echo $for8 ?>'></td>
        <td><input name="imp_8" id="imp_8" size="10" value='<?php echo $imp_8 ?>'></td>
        </tr>
        
        <tr>
        <td><input name="itr9" class="uppercase" id="itr9" size="40" value='<?php echo $itr9 ?>'></td>
        <td><input name="for9" class="uppercase" id="for9" size="25" value='<?php echo $for9 ?>'></td>
        <td><input name="imp_9" id="imp_9" size="10" value='<?php echo $imp_9 ?>'></td>
        </tr> 
        
        <tr>
        <td><input name="itr10" class="uppercase" id="itr10" size="40" value='<?php echo $itr10 ?>'></td>
        <td><input name="for10" class="uppercase" id="for10" size="25" value='<?php echo $for10 ?>'></td>
        <td><input name="imp_10" id="imp_10" size="10" value='<?php echo $imp_10 ?>'></td>
        </tr>
         <tr>
        <td><input name="itr11" class="uppercase"  id="itr11" size="40" value='<?php echo $itr11 ?>'></td>
        <td><input name="for11" class="uppercase" id="for11" size="25" value='<?php echo $for11 ?>'></td>
        <td><input name="imp_11" id="imp_11" size="10" value='<?php echo $imp_11 ?>'></td>
        </tr>
        <tr>
        <td><input name="itr12" class="uppercase"  id="itr12" size="40" value='<?php echo $itr12 ?>'></td>
        <td><input name="for12" class="uppercase" id="for12" size="25" value='<?php echo $for12 ?>'></td>
        <td><input name="imp_12" id="imp_12" size="10" value='<?php echo $imp_12 ?>'></td>
        </tr>
        <tr>
        <td><input name="itr13" class="uppercase"  id="itr13" size="40" value='<?php echo $itr13 ?>'></td>
        <td><input name="for13" class="uppercase" id="for13" size="25" value='<?php echo $for13 ?>'></td>
        <td><input name="imp_13" id="imp_13" size="10" value='<?php echo $imp_13 ?>'></td>
        </tr>
        <tr>
        <td><input name="itr14" class="uppercase"  id="itr14" size="40" value='<?php echo $itr14 ?>'></td>
        <td><input name="for14" class="uppercase" id="for14" size="25" value='<?php echo $for14 ?>'></td>
        <td><input name="imp_14" id="imp_14" size="10" value='<?php echo $imp_14 ?>'></td>
        </tr>
         <tr>
        <td><input name="itr15" class="uppercase"  id="itr15" size="40" value='<?php echo $itr15 ?>'></td>
        <td><input name="for15" class="uppercase" id="for15" size="25" value='<?php echo $for15 ?>'></td>
        <td><input name="imp_15" id="imp_15" size="10" value='<?php echo $imp_15 ?>'></td>
        </tr> 
          <td></td> 
          <td align="center"><input type="button" value="Calcola Totale" onClick="javascript:sum();"></td> 	
          <td><input name="totale" type="text" required="required" size="10" value='<?php echo $totale ?>'> </td>         
        </table>
</fieldset>
<div id="salva">
<input type="image" src="css/img/back.png" height="46" width="46" />
</div>
</FORM>
</div> <!-- chiudo il div container -->
</body>
</html>
 
probabilmente il problema sono gli apici singoli
PHP:
value='<?php echo $cliente ?>'
visto che nel valore ne trova uno chiude il value
modifica
PHP:
value="<?php echo $cliente ?>"
 
probabilmente il problema sono gli apici singoli
PHP:
value='<?php echo $cliente ?>'
visto che nel valore ne trova uno chiude il value
modifica
PHP:
value="<?php echo $cliente ?>"

Ci siamo quasi, ti chiedo giusto un altro pochino di pazienza, adesso viene letto tutto alla perfezione sia dal file visualizza.php - stampa.php - elimina.php

il problema si verifica con il file update.php che prima funzionava bene, in effetti se modifico un campo dopo l'inserimento la query fallisce ...

ecco il file update.php

PHP:
<?php
session_start();
?>


<?php

$veicolo = $_POST['veicolo'];
$targa = $_POST['targa']; 
$km = $_POST['km'];
$telaio = $_POST['telaio']; 
$cliente = $_POST['cliente']; 
$indirizzo = $_POST['indirizzo']; 
$piva = $_POST['piva']; 
$tel = $_POST['tel']; 
$itr1 = $_POST['itr1'];
$itr2 = $_POST['itr2'];
$itr3 = $_POST['itr3'];
$itr4 = $_POST['itr4']; 
$itr5 = $_POST['itr5']; 
$itr6 = $_POST['itr6'];
$itr7 = $_POST['itr7']; 
$itr8 = $_POST['itr8'];
$itr9 = $_POST['itr9']; 
$itr10 = $_POST['itr10'];
$itr11 = $_POST['itr11'];
$itr12 = $_POST['itr12']; 
$itr13 = $_POST['itr13'];
$itr14 = $_POST['itr14'];
$itr15 = $_POST['itr15'];
$for1 = $_POST['for1']; 
$for2 = $_POST['for2'];
$for3 = $_POST['for3'];
$for4 = $_POST['for4'];
$for5 = $_POST['for5'];
$for6 = $_POST['for6'];
$for7 = $_POST['for7']; 
$for8 = $_POST['for8']; 
$for9 = $_POST['for9']; 
$for10 = $_POST['for10']; 
$for11 = $_POST['for11']; 
$for12 = $_POST['for12']; 
$for13 = $_POST['for13']; 
$for14 = $_POST['for14']; 
$for15 = $_POST['for15']; 
$imp_1 = $_POST['imp_1']; 
$imp_2 = $_POST['imp_2']; 
$imp_3 = $_POST['imp_3']; 
$imp_4 = $_POST['imp_4']; 
$imp_5 = $_POST['imp_5']; 
$imp_6 = $_POST['imp_6']; 
$imp_7 = $_POST['imp_7']; 
$imp_8 = $_POST['imp_8']; 
$imp_9 = $_POST['imp_9']; 
$imp_10 = $_POST['imp_10']; 
$imp_11 = $_POST['imp_11']; 
$imp_12 = $_POST['imp_12']; 
$imp_13 = $_POST['imp_13']; 
$imp_14 = $_POST['imp_14']; 
$imp_15 = $_POST['imp_15']; 
$totale = $_POST['totale']; 
$n_tecnico = $_POST['n_tecnico']; 
$data = $_POST['data'];   

// inserisco le credenziali di accesso
$host = "";
$user = "";
$pass = "";
$database = "";

// mi connetto al DBMS
$myconn = mysql_connect($host, $user, $pass) or die('Errore...');

//Mi connetto al database
mysql_select_db($database, $myconn) or die('Errore...');

 

//Preparo la query di modifica
$sql = "UPDATE Commesse SET veicolo = UPPER ('$veicolo'), targa = UPPER ('$targa'), km = UPPER ('$km'), telaio = UPPER ('$telaio'), cliente = UPPER ('$cliente'), indirizzo = UPPER ('$indirizzo'), piva = ('$piva'), tel = ('$tel'), itr1 = UPPER ('$itr1'), itr2 = UPPER ('$itr2'), itr3 = UPPER ('$itr3'), itr4 = UPPER ('$itr4'), itr5 = UPPER ('$itr5'), itr6 = UPPER ('$itr6'), itr7 = UPPER ('$itr7'), itr8 = UPPER ('$itr8'), itr9 = UPPER ('$itr9'), itr10 = UPPER ('$itr10'), itr11 = UPPER ('$itr11'), itr12 = UPPER ('$itr12'), itr13 = UPPER ('$itr13'), itr14 = UPPER ('$itr14'), itr15 = UPPER ('$itr15'), for1 = UPPER ('$for1'), for2 = UPPER ('$for2'), for3 = UPPER ('$for3'), for4 = UPPER ('$for4'), for5 = UPPER ('$for5'), for6 = UPPER ('$for6'), for7 = UPPER ('$for7'), for8 = UPPER ('$for8'), for9 = UPPER ('$for9'), for10 = UPPER ('$for10'), for11 = UPPER ('$for11'), for12 = UPPER ('$for12'), for13 = UPPER ('$for13'), for14 = UPPER ('$for14'), for15 = UPPER ('$for15'), imp_1 = $imp_1, imp_2 = $imp_2, imp_3 = $imp_3, imp_4 = $imp_4, imp_5 = $imp_5, imp_6 = $imp_6, imp_7 = $imp_7, imp_8 = $imp_8, imp_9 = $imp_9, imp_10 = $imp_10, imp_11 = $imp_11, imp_12 = $imp_12, imp_13 = $imp_13, imp_14 = $imp_14, imp_15 = $imp_15, totale = $totale, n_tecnico = UPPER ('$n_tecnico'), data = STR_TO_DATE('$data', '%d/%m/%Y') WHERE id = '".$_SESSION['id']."'";

echo $sql;


// Lanciamo la query:
$result = mysql_query($sql);


// controllo l'esito
if (!$result) {
	die("Errore nella query $sql: " . mysql_error());
}

else
echo 'I dati da te inseriti sono stati correttamente registrati'; 
echo '</br>';
echo "<a href=\"Inserisci.php\">Inserisci</a>"; 


// E chiudiamo la connessione a MySQL
mysql_close();

?>


</body>
</html>

Questo l'errore

PHP:
WHERE id = '66': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''), targa = UPPER ('ZZ123ZZ'), km = UPPER ('125000'), telaio = UPPER ('12121212' at line 1
 
Ultima modifica:
dovrai ciclare il POST e fare l'escape come hai fatto per la INSERT
 
PHP:
foreach ($_POST as $key => $value) {
    $_POST[$key] = addslashes($value);
}
 
ciao
sara che a me non piace "disturbare" msql usando funzioni nelle query, quindi oltre a quello che ha detto criric non fai
PHP:
<?php
foreach ($_POST as $key => $value) {
    $_POST[$key] = strtoupper(addslashes($value));
}
?>
togliendo tutti quegli UPPER dalla query?
tra l'altro diventa più corta e semplice quindi più "debuggabile"
 

Discussioni simili