Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333

    non mi riesce di usare mysqli_real_escape_string

    Ciao a tutti
    dovendo updatare una tabella con delle parole apostrofate e accentate e mi vedo costretto a usare mysqli_real_escape_string().
    Ma evidentemente lo uso in maniera sbagliata e sulla tabella la frase risulta salvata troncata prima dell'apostrofo.
    Mi dareste un'occhiata al mio codice e mi direste dove sbaglio e come correggere eventuali errori?
    Grazie

    codice:
    if (isset($_POST['azione' ]) && $_POST['azione']=="salva")
    {
    $id=$_POST['id'];
    $nome=$_POST['nome'];
    
    
    if(get_magic_quotes_gpc())
    {
    	$nome=stripslashes($nome);
    	}
    
    
    $mysqli = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_DB);
    
    
    
    
    if ($mysqli->connect_errno) {
        printf("Connect failed: %s\n", $mysqli->connect_error);
        exit();
    }	
    $nome=mysqli_real_escape_string($mysqli,$nome);
    
    
    $query_update ="update mia_tabella set nome='".$nome."' WHERE id=".$id;
    
    $mysqli->query("SET CHARACTER SET 'utf8'");
    
    $mysqli->query($query_update);
    
    
    $mysqli->close();
    }

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    dovendo updatare una tabella con delle parole apostrofate e accentate e mi vedo costretto a usare mysqli_real_escape_string().
    Ti sfugge il motivo per cui si rende necessario: https://en.wikipedia.org/wiki/SQL_injection
    Per farlo correttamente: http://php.net/manual/it/mysqli.quic...statements.php
    Codice PHP:
    if(get_magic_quotes_gpc()) 
    magic quotes sono state rimosse da php 5.4, ed erano disabilitate di default da molto prima. E, per farti capire quanto è vecchia quella versione, php 5.4 non è neanche più tra le versioni attivamente supportate: http://php.net/supported-versions.php
    Codice PHP:
    $mysqli->query("SET CHARACTER SET 'utf8'"); 
    Se vuoi continuare ad usare mysqli_real_escape_string, per lo meno usa http://php.net/manual/it/mysqli.set-charset.php per settare il set di caratteri. mysqli deve conoscere che set di caratteri stai utilizzando per fare correttamente l'escape della stringa, e se glielo fornisci in quel modo non può farlo. Per gli stessi motivi, dovresti settare il charset prima di usare mysqli_real_escape_string

    Ma evidentemente lo uso in maniera sbagliata
    Mi pare corretto.
    sulla tabella la frase risulta salvata troncata prima dell'apostrofo.
    Come stampi il risultato nella pagina?
    Ultima modifica di .Kurt; 27-11-2015 a 18:00

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333
    Grazie .Kurt ,
    le ho provate tutte comprese quelle da te citate ma l'accento non passa.
    Il bello è che in un altro e molto più complesso programma con la parte di salvataggio dei dati uguale a questo l'apostrofo passa

    NON CAPISCO

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    333
    risolto tutto in fase di output dei dati con
    htmlentities($riga [1],ENT_QUOTES,'UTF-8')

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 © 2025 vBulletin Solutions, Inc. All rights reserved.