Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387

    query non eseguite su MYSql se collation utf 8?

    Ciao...
    Sto riscontrando su diversi script, che van su diverse tabelle, lo stesso problema...

    query sql, dalla più complessa alla più semplice, mi restuiscono errore se vanno a lavorare su tabelle con collation "UTF_8"...

    Me ne sono accorto perchè se cambio nella canonica swedish... non da problemi... POssibile?

  2. #2
    bisognerebbe sapere di quale errore si tratta, di quali versioni del php e mysql stai usando.

    La collation e' legata al tipo di character set. Quindi se la collation e' swedish il charset sara' latin1 mentre per la collation utf8_general_ci il charset e' utf8.

    Poi considera che hai almeno tre/quattro livelli di applicazione del character set: client (su php), connessione, server, tabella.

    Quando vuoi connetterti ad una tabella con charset utf8 prova a lanciare prima la query:

    mysql_query('set names utf8');

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    Grazie intanto per la risposta.

    Un errore è ad esempio

    codice:
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given
    Se lancio la query presente in questo script http://forum.html.it/forum/showthrea...icerca+explode su un campo "trama" che ha appunto collation utf-8.

    Se tolgo il campo trama, tutto OK... Idem se cambio la collation a swedish la esegue bene....

    Su un altro script, una semplice "SELECT * FROM users WHERE COMUNE = '$comune'" se appunto comune è UTF-8 non me la esegue.....

  4. #4
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given


    questa segnalazione non ha niente a che fare con utf8 o latin1.

    Non passi a mysql_fetch_array() l'atteso parametro del resource id#

    dovresti verificare lo script usato.

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    ...

    non per darti contro (non mi permetterei mai data la tua esperienza!!!) ma, se cambio collation la stessa query con gli stessi parametri (o meglio la stessa stringa cercata attraverso un <<banale>> casella di testo... da il risultato sperato!

    Idem ad esempio in una query simile:

    codice:
    $comune = $_GET['comune'];
    $query = "SELECT * FROM users WHERE comune LIKE '$comune'";
    chiamata da generazione_xml.php?comune=roma (ad esempio).

    Se lascio UTF-8 NON estrae alcun risultato. Se cambio la collation... estrae i miei users sul comune capitolino...

    E' per questo motivo che ho imputato gli errori alla collation...

  6. #6
    Originariamente inviato da webtemplum
    ...

    Se lascio UTF-8 NON estrae alcun risultato. Se cambio la collation... estrae i miei users sul comune capitolino...

    E' per questo motivo che ho imputato gli errori alla collation...
    ma hai provato a settare la connessione utf8 come ti ho detto prima?

    la collation si limita a definire, nell'ambito di un character set, quale sia l'ordinamento da eseguire in base ai caratteri estratti. Non si puo' usare una collation tipo swedish su una connessione utf8 o viceversa. utf8 e' con lunghezza variabile dei byte mentre latin1 e' sempre solo un byte per carattere.

    Ovvio che se nella stringa con utf8 incontri un carattere multibyte ti va a pallino ogni ricerca su stringhe latin1 e viceversa. Evidentemente hai il php e la connessione con mysql che utilizzano latin1 collation swedish.


    a parte il fatto che senza caratteri jolly fare:

    WHERE comune LIKE '$comune'

    e' identico a:

    WHERE comune = '$comune'

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    no, non ci ho provato...

    in realtà ad ogni pagina inserisco in alto questo intanto

    codice:
    <?php header('Content-Type: text/html; charset=utf-8'); ?>
    invece, se la mia query è

    codice:
    $comune = $_GET['comune'];
    $query = "SELECT * FROM users WHERE comune LIKE '$comune'";
    $result = $mysqli->query($query);
    mi aiuteresti ad aggiungere il tuo codice?
    grazie!

  8. #8
    basta inserirlo dopo la connessione. serve per definire il character set usatp dalla connessione.

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

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    idem, stesso errore...

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given

    cambiata cosi la connessione

    codice:
     function DbConnectAndSelect()
            {
                $this->conn = @mysql_connect($this->host, $this->user, $this->password) or die ("Impossibile stabilire una connessione con il server.
    MySql risponde: " . mysql_error() . "
    Il codice errore é:" . mysql_errno());
                
                @mysql_select_db($this->db, $this->conn) or die ("Impossibile connettersi al database $this->db.
    MySql risponde: " . mysql_error() . "
    Il codice errore é:" . mysql_errno());
    			
    			mysql_query('set names utf8');
            }

  10. #10
    posta anche il codice della query che ti da l'errore su mysql_fetch_array()

    vedo poi che fai un mixer delle funzioni mysqli e mysql ... guarda che non sono la stessa cosa.

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

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.