• Moderatore

    phpmyadmin aggiunge escape arbitrari prima dei quote

    Ciao a tutti,

    ho sempre usato phpmyadmin per esaminare e/o modificare a mano i miei database, scrivendo a mano le opportune query nella apposita finestra sql.

    Da quando ho aggiornato a php 5.3 però, ogni volta che inserisco una query da phpmyadmin mi dà questo errore:[INDENT]Pare che ci sia un errore nella query SQL immessa. L'errore del server MySQL mostrato qui sotto, se c'è, può anche aiutare nella risoluzione del problema
    ERROR: Virgolette Non Chiuse @ 55
    STR: "
    SQL: SELECT * FROM table_x WHERE field_y = "stringa_z"

    [/INDENT]Il fatto è che ovviamente le virgolette sono chiuse, e i caratteri di escape che si vedono prima delle virgolette non li ho messi io ma li ha aggiunti phpmyadmin.

    Tutto il resto funziona perfettamente (comprese le query che non richiedono virgolette intorno a una stringa), ma se devo fare una query che richiede le virgolette, la funzione sql di phpmyadmin non me lo permette più, perchè aggiunge gli escape e segnala errore di virgolette non chiuse.

    Si direbbe un problema di phpmyadmin, perchè le stesse query eseguite direttamente da mysql o da uno script php funzionano correttamente senza inserire caratteri di escape superflui.

    Qualcuno ha idea di quale potrebbe essere il problema e come superarlo? C'è un modo per dire a phpmyadmin di non aggiungere i caratteri di escape prima dei quote?

    EDIT: mi sta venendo dubbio, perchè gli script e mysql girano su linux, mentre phpmyadmin lo uso da un browser sotto windows. Può avere a che fare? (però con il phpmyadmin posto su un altro server linux dove gira una versione più vecchia di php non ci sono problemi a gestirlo da un browser su windows)


  • User Attivo

    Potrebbe essere questo problema qui: h t t p://sourceforge.net/tracker/index.php?func=detail&aid=1905711&group_id=23067&atid=377408

    Prova a dare un'occhiata al tuo common.inc.php intorno alla riga 225...


  • Moderatore

    Ciao html5today e grazie!

    Era proprio quel problema lì e adesso funziona. Meno male perchè mi stava dando parecchio noia.

    A dire il vero non ho seguito fedelmente la soluzione suggerita, anche perchè mi sembrava poco chiara e mi dava un sacco di problemi.

    In pratica ho semplicemente commentato il test nel file common.inc.php:

    // if (function_exists('get_magic_quotes_gpc') && -1 == version_compare(PHP_VERSION, '5.2.99') && get_magic_quotes_gpc()) {
    

    In modo che le funzioni di strip siano sempre eseguite

        PMA_arrayWalkRecursive($_GET, 'stripslashes', true);
        PMA_arrayWalkRecursive($_POST, 'stripslashes', true);
        PMA_arrayWalkRecursive($_COOKIE, 'stripslashes', true);
        PMA_arrayWalkRecursive($_REQUEST, 'stripslashes', true);
    

    Così sembra funzionare bene, almeno per ora, d'altra parte non ho bisogno di inserire caratteri escape nelle query, per cui non dovrei avere inconvenienti.

    Posso chiederti se hai avuto lo stesso problema e nel caso che soluzione hai adottato?


  • User Attivo

    A dire il vero no, ho trovato la soluzione che ti ho proposto cercando su Internet e mi è sembrata adeguata al caso tuo. Il server su cui lavoro abitualmente è un FreeBSD con PHP 5.2.3 e non ho avuto questi problemi (anche perchè il phpMyAdmin che uso è un po' vecchio, la 2.11.3)


  • Moderatore

    Ah ecco, per la verità io uso CentOs 5 con phpMyAdmin 2.11.11.2, che funziona perfettamente con la versione di php tipica della distro (5.2.10).

    Dicono che sia la filosofia CentOs, di ritardare gli aggiornamenti in favore della massima stabilità, infatti con la configurazione tipica non ho mai un problema, ma proprio mai.

    Il fatto è che drupal 7 richiede php 5.3, così l'ho voluto aggiornare e devo dire che l'upgrade a php 5.3.5 non è stato affatto indolore (su un server a 32 bit, dove comunque alla fine sta girando, mentre su un altro a 64 bit ho trovato altri problemi aggiuntivi e l'ho rinviato).

    Comunque grazie ancora e complimenti, ovviamente l'avevo cercato anch'io in rete ma non ero proprio riuscito a trovarlo.