Visualizzazione risultati 1 fino 6 di 6
Like Tree1Likes
  • 1 Post By alemoppo

Discussione: problema apostrofi mysql

  1. #1
    Guest

    Predefinito problema apostrofi mysql

    In pratica io ho una pagina privata che manda i dati ad una pagina pubblica
    il problema è che nella query di insert non mi prende l'apostrofo...
    ho provato con tutto mysql_escape_string, str_replace, ecc ma proprio non va
    la stranezza è che nella query di modifica me lo lascia mettere sto apostrofo

    Riporto qua il codice

    Dove sbaglio ?

    Codice PHP:
    <?php
    include('dati.php');
    $azione = $_POST['azione'];
    $id = $_POST['id'];
    $page = $_POST['page'];
    $titolo = mysql_escape_string($_POST['titolo']);
    $testo = mysql_escape_string($_POST['testo']);
    define("UPLOAD_DIR", "./uploads/");
    $file=false;
    if(isset(
    $_FILES['img']))
    {
    $file = $_FILES['img'];
    if(
    $file['error'] == UPLOAD_ERR_OK and is_uploaded_file($file['tmp_name']))
    {
    move_uploaded_file($file['tmp_name'], UPLOAD_DIR.$file['name']);
    }
    }

    if (
    $azione=="modifica") {
    $keys=array('titolo','testo');
    $values=array("'".$titolo."'","'".$testo."'");
    if(
    $file)
    {
    $keys[]='img';
    $values[]="'".$file['name']."'";
    }

    $q="UPDATE eventi SET ";
    $tmp=array();
    for (
    $i=0; $i < count($keys) ; $i++) {
    $tmp[]=$keys[$i]."=".$values[$i];
    }
    $q.=implode(",", $tmp);

    $q.=" WHERE id=".$id;
    mysql_query($q);
    if(!
    mysql_query($q))
    echo
    "QUERY FALLITA";
    }

    if (
    $azione=="elimina") {
    mysql_query("delete from eventi where eventi.id = '$id'");
    }

    if (
    $azione=="inserisci") {
    $keys=array('titolo','testo');
    $values=array("'".$titolo."'","'".$testo."'");
    if(
    $file)
    {
    $keys[]='img';
    $values[]="'".$file['name']."'";
    }


    $q="insert into eventi (".implode("'", $keys) .") values (".implode("'", $values).");";
    if(!
    mysql_query($q))
    echo
    "QUERY FALLITA";

    }

    ?>
    Grazie
    Ultima modifica di responsivesite : 17-03-2015 alle ore 14.29.07

  2. #2
    Guest

    Predefinito

    Prova urlencode o urldecode, se le passi in post o get altrimenti htmlentities se è una normale stringa o htmlspecialchars....provane un pò quella che prende va bene
    Ultima modifica di fractalcosmo : 17-03-2015 alle ore 21.02.50

  3. #3
    Data registrazione
    06-10-2014
    Messaggi
    5

    Predefinito

    ciao credo che il tuo problema sia nel codice mysql, prova cosi

    $q="insert into eventi ('".implode("',", $keys) ."') values ('".implode("',", $values)."');";

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    • In questi casi devi sempre debuggare: nel caso specifico una echo $q, poi al più provi la query da phpMyAdmin
    • Così a naso (in realtà non ho letto tutto il codice) mi sembra che stai tentando di fare una query mettendo gli apici anche nei nomi delle colonne.
    • Invece di "QUERY FALLITA", io stamperei un messaggio un po' più utile, del tipo mysql_error().
    • I dati che inserisci non devono contenere apici: devi assolutamente effettuare l'escape tramite ad esempio con la mysql_real_escape_string() (come però vedo stai usando) per evitare sql injection.
    • Le funzioni mysql_* sono deprecate. Usa mysqli_* o PDO.


    Ciao!
    Ultima modifica di alemoppo : 19-03-2015 alle ore 21.14.32
    karl94 likes this.

  5. #5
    Guest

    Predefinito

    Fuori dal lavoro(dove non uso phpmyadmin quindi non ho di questi problemi) ho creato un progetto personale di inserimento dati e gestione utente etc...etc....migrando a phpmyadmin dal PDO ho notato che c'è questo problema, se inserisci un una input text un testo con apostrofi e poi salvi sul phpmyadmin non ti prende gli apostrofi, salvataggio fallito, nel php my admin imposti text e utf8 general -ci, come si risolve, credo che ognuno in base al codice abbia una risoluzione diversa, per il mio caso
    Codice PHP:
    mysqli_real_escape_string($link, $string_to_escape)
    oppure
    Codice PHP:
    mysqli_escape_string($link, $query)
    non serve a niente, con urlencode nel salvataggio e urldecode nella lettura sul WEB funziona però, c'è un però, mettendo l'urlencode alla stringa prima di salvarla nel DB ovviamente fa l'encode degli apostrofi e dei caratteri speciali, quindi sul DB nella descrizione mi salva una cosa di questo genere

    Codice:
    l%27albero+%22si+no%22+%24+%26kk+
    Usando urldecode nella visualizzazione della tabella sul web la stringa si vede normalmente, però sul DB rimane quel pasticcio di codifica dei caratteri, io ho semplicemente risolto con ADDSLASHES prima di salvare la stringa sul DB, spero che sia di aiuto, con Addslashes e campo descrizione text e utf8-general-ci sia sul DB sia in scrittura che in lettura posso inserire sia caratteri speciali che apostrofi accenti etc...etc....esempio scrivo dal WEb questa stringa nel campo descrizione sul DB leggo:

    Codice:
    l'abero di natale con % (si si) vai lì adesso
    codifica in maniera corretta sia gli apostrofi che i caratteri speciali aggiungendo addslashes
    Ultima modifica di fractalcosmo : 21-03-2015 alle ore 17.04.27

  6. #6
    Guest

    Predefinito

    rispondo ora, grazie a tutti... ho risolto usando il mysql_real_escape_string sia sulle variabili contenute nella pagina amministrativa privata, sia nella pagina di arrivo dei dati...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •