Originariamente inviato da piero.mac
forse perche' non fai la connessione al db prima di usare mysql_real_escape_string()
La funzione deve valutare il character set della connessione.
io faccio cosi, raccolgo tutto ciò che mi serve dal $_POST, creo la query e poi la eseguo (ho una classe cosi per il database)
Codice PHP:
<?php
class Database
{
function GetDatabaseResult($Query)
{
$sql_host = "localhost:3306";
$sql_user = "root";
$sql_pwl = "root";
$sql_db = "database";
if (!$connessione_db = mysql_connect($sql_host,$sql_user,$sql_pwl))
{
user_error("Errore di connessione $sql_host, $sql_user, $sql_password, $sql_db");
return false;
}
if (!mysql_select_db($sql_db))
{
user_error("Database non disponibile");
return false;
}
if (!$result = mysql_query($Query, $connessione_db))
{
user_error(mysql_error());
return false;
}
mysql_close($connessione_db);
return $result;
}
}
?>
e quando devo salvare le modifiche
Codice PHP:
function SalvaModificheNelDatabase()
{
$id= $_POST["id"];
$coltura = $_POST["coltura"];
...
...
...
$descrizione_concimazioni = strip_tags($_POST['descrizione_concimazioni']);
$descrizione_concimazioni = mysql_real_escape_string($descrizione_concimazioni);
$descrizione_trattamenti = strip_tags($_POST['descrizione_trattamenti']);
$descrizione_trattamenti = mysql_real_escape_string($descrizione_trattamenti);
...
...
...
$db = new Database();
$query = "UPDATE table SET ... WHERE id=$id";
if (!$db->GetDatabaseResult($query))
{
return ModificaDatiFallita();
}
return TuttoOk();
}
come dovrei fare? Visto che il database lo richiamo dopo...
Inoltre, le lettere accentate mi vengono salvate/estratte anche se non uso mysql_real_escape_string... :master: