Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310

    Warning: mysql_real_escape_string()

    la riga completa dell'errore è

    PHP Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\Programmi\wamp\www\modifica-code.php on line 161
    e me lo segnala su ogni riga "pari" di questo codice
    Codice PHP:
    $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);
    $descrizione_acqua strip_tags($_POST['descrizione_acqua']);
    $descrizione_acqua mysql_real_escape_string($descrizione_acqua);
    $descrizione_note strip_tags($_POST['descrizione_note']);
    $descrizione_note mysql_real_escape_string($descrizione_note); 
    ho una pagina dove estraggo dati dal db, tutto ok. Riempio dei campi con i dati estratti, ma quando vado a salvare le eventuali modifiche, mi dà questo errore, e non mi salva i campi

    però se tolgo l'uso di mysql_real_escape_string() funziona. :master:
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  2. #2
    forse perche' non fai la connessione al db prima di usare mysql_real_escape_string()

    La funzione deve valutare il character set della connessione.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    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:
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  4. #4
    richiami la connessione dopo aver eseguito mysql_real_escape_string.

    la connessione va richiamata prima. Come devi fare .... vedi tu come hai strutturato la classe. Non posso rifarti la struttura. La verifica deve essere eseguita dopo la connessione al db e prima della query.

    le lettere accentate non vengono gestite dal carattere di escape. Vengono gestiti i caratteri speciali che hanno una doppia funzione: carattere stringa e carattere di controllo. L'escape serve a dire a mysql che quello che segue il backslashes e' una carattere stringa.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da piero.mac
    richiami la connessione dopo aver eseguito mysql_real_escape_string.

    la connessione va richiamata prima. Come devi fare .... vedi tu come hai strutturato la classe. Non posso rifarti la struttura. La verifica deve essere eseguita dopo la connessione al db e prima della query.
    si, immaginavo che dovrei rifarmi la struttura della classe che si connette al database.

    Originariamente inviato da piero.mac
    le lettere accentate non vengono gestite dal carattere di escape. Vengono gestiti i caratteri speciali che hanno una doppia funzione: carattere stringa e carattere di controllo. L'escape serve a dire a mysql che quello che segue il backslashes e' una carattere stringa.
    quindi dovrò cambiare la mia classe a patto che nel mio testo voglia usare caratteri tipo " ' \

    giusto?
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  6. #6
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    la cosa strana era che quel errore me lo dava solo su windows. La stessa cosa, sul Mac, non mi dava errore.

    E' possibile ciò?
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  7. #7
    Originariamente inviato da blekm
    la cosa strana era che quel errore me lo dava solo su windows. La stessa cosa, sul Mac, non mi dava errore.

    E' possibile ciò?
    visualizzare errori o meno non e' sinonimo di funzionare o meno, ma solo di visualizzazione.

    Se non vuoi il controllo sul charset della connessione usa mysql_escape_string()

    Nota: mysql_escape_string() non aggiunge le sequenze di escape a % ed a _. Questa funzione è identica a mysql_real_escape_string() eccetto che mysql_real_escape_string() accetta un identificativo di connessione ed aggiunge le sequenze di escape alla stringa in base al set di caratteri corrente. mysql_escape_string() non accetta come argomento un identificativo di connessione e non rispetta le impostazioni del corrente set di caratteri.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    se la cosa ti stravolge troppo il lavor precedentemente fatto puoi anche usare

    mysql_escape_string(),

    che ho le stesso identico concetto, solo che lavora in maniera 'generica', quindi senza interpellare il charset del bd.
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  9. #9
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    proverò a usare mysql_escape_string invece di mysql_real_escape_string.

    Vi farò sapere... grazie per ora
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  10. #10
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da blekm
    proverò a usare mysql_escape_string invece di mysql_real_escape_string.
    ottimo, funziona
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.