• Bannato User Attivo

    Salvare in mysql una descrizione con apostrofo

    Faccio caricare una foto ed un campo di testo con la descrizione della foto.
    Se nella descrizione c'è un "'" ovvero un apostrofo o un apice, chiamatelo come volete, la query che me lo inserisce nel database non viene portata a termine e quindi la riga dei dati non memorizzata.

    La descrizione poi viene memorizzata e restituita come un bbcode per un forum, ovvero appare un codice del tipo:

    [img]FOTO CARICATA URL[/img]
    [i]Descrizione della foto[/i]
    

    Come posso far salvare lo apostrofo nel database? :mmm:
    Grazie Gittini


  • User Attivo

    Come entità html ? &cancelletto39;
    (sostituisci cancelletto con # 😄 )


  • Bannato User Attivo

    Altri modi?
    Cioè, io quando agisco con phpmyqdmin, MI SEMBRA (ma non ne sono sicuro) riesco a scrivere ed a salvare descrizioni con lo '

    Ho detto una cavolata? ()


  • Moderatore

    Ciao.
    Puoi usare mysql_escape_string(); che fa quello che ti serve 🙂

    :ciauz:


  • Bannato User Attivo

    @fabioski said:

    Altri modi?
    Cioè, io quando agisco con phpmyqdmin, MI SEMBRA (ma non ne sono sicuro) riesco a scrivere ed a salvare descrizioni con lo '

    Ho detto una cavolata? ()Rimangio tutto. E' proprio quello che mi serviva il metodo da Lei proposto.
    La ringrazio! :ciauz:


  • Bannato User Attivo

    Scusate. Un'ultima cosa...

    Come devo fare per cambiare il dato della stringa?
    Così può andare? :mmm:

    $desc = str_replace("'", "'", $desc);
    
    

    Doppio apice, apice, doppio apice?


  • Moderatore

    Non ho capito cosa dovrebbe fare quella cosa... 😐

    Hai una variabile ->

    $pippo="qualche cosa con ' etc etc"?

    lo inserisci in questo modo...

    $q="insert into tabella value (".mysql_escape_string($pippo).");"; ed il problema scompare 🙂


  • Bannato User Attivo

    Grazie ragazzi. Anche per il php/mysql siete migliori di molti altri forum "dedicati".

    Ho risolto facendo una sostituzione nella stringa. Non ho usato quella funzione.

    Ma dimmi un po', la funziona che hai messo tu ELIMINA TUTTI I PROBLEMI di inserimento nel database di caratteri "strani", accenti, apostrofi doppi apici e via dicendo oppure fa dell'altro?

    Sostituisce in automatico i carartteri con i rispettivi codici html (quelli del tipo &blabla; )?

    Se così fosse i miei problemi sarebbero risolti.


  • Moderatore

  • User Newbie

    Salve a tutti sono nuovo e mi scuso se sbaglio argomento.
    ho un programma sul pc che mi genera un file .xml che contiene gli articoli di un negozio.
    devo popolare un db mysql del mio sito web con quei dati quindi girando per il web ho trovato quello che faceva a caso mio.

    ma c'e' un errore quando sulla categori dei miei articoli capita ' (apice) succede che si sballa tutto il lavoro.

    copio in calce il pezzo di codice che credo sia errato.
    se potete aiutarmi sarei grato grazie mille.

    prepara l'insermento delle categorie e sottocategorie nella tabella jos_vm_category

    $stmt = $mysqli->prepare("INSERT INTO jos_vm_category (vendor_id, category_name, category_publish, cdate, mdate, category_browsepage, products_per_row, category_flypage) VALUES(?,?,?,?,?,?,?,?)");
    $stmt->bind_param('issiisis', $vendor, $name, $publish, $cdate, $mdate, $category_browsepage, $products_per_row, $category_flypage);
    foreach($cat_subcat as $key => $val)
    {
    $vendor = 1;
    $name = $key;
    $publish = "Y";
    $cdate = time();
    $mdate = time();
    $category_browsepage = JOS_VM_CATEGORY_CATEGORY_BROWSEPAGE;
    $products_per_row = JOS_VM_CATEGORY_PRODUCTS_PER_ROW;
    $category_flypage = JOS_VM_CATEGORY_CATEGORY_FLYPAGE;
    $stmt->execute();
    foreach($val as $k => $v)
    {
    $vendor = 1;
    $name = $v;
    $publish = "Y";
    $cdate = time();
    $mdate = time();
    $category_browsepage = JOS_VM_CATEGORY_CATEGORY_BROWSEPAGE;
    $products_per_row = JOS_VM_CATEGORY_PRODUCTS_PER_ROW;
    $category_flypage = JOS_VM_CATEGORY_CATEGORY_FLYPAGE;
    $stmt->execute();
    }
    }
    $stmt->close();

    grazie a tutti