Visualizzazione risultati 1 fino 30 di 30
Like Tree1Likes
  • 1 Post By dreadnaut

Discussione: Problema esecuzione query PHP/Mysqli

  1. #1
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito Problema esecuzione query PHP/Mysqli

    Buongiorno.
    Mi chiamo Andrea e vi volevo gentilmente chiedere supporto per un problema che ho con il mio mini-sito.
    Vi allego le tre pagine in modo che possiate analizzare il contenuto e magari capire dove sia il problema.
    https://1drv.ms/u/s!AnbIfJxpPNWQj9w6...zBIhQ?e=fjnJHB
    In questa pagina io vado caricare una tabella all'interno del mio database cliccando sul tasto upload, la tabella viene visualizzata e dalla pagina si possono effettuare le dovute modifiche ove necessario e per poi fare l'import. Funziona tutto o meglio quasi tutto nel senso che il caricamento della tabella nella pagina PHP lo esegue correttamente ma l'import si blocca alla riga di ID 263 e da lì in poi non ne vuole sapere....
    Ho controllato anche se all'interno della tabella ci siano dei dati che facciano fastidio tipo ' " alla query ma non ne ho visto.
    Ho provato a mettere un alert(data); per capire che errori disse ma aimè con zero risultati.
    Qualcuno che per favore ne capisca più di me (ci vuole poco) e che mi aiuti gentilmente.
    Grazie Andrea.

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Investighiamo! Per prima cosa, chiama error_reporting(E_ALL); in cima alle tue pagine PHP, per mostrare eventuali errori.

    Poi visita la pagina per caricare il file CSV, ed apri il Web Inspector del tuo browser (di solito premendo F12). Nel tab "Network / Rete" appariranno tutte le chiamate al server, puoi controllare sia i dati inviati dal browser, sia quelli ricevuti. Messaggi di errore dovrebbero apparire nella risposta dal server.
    dinasty likes this.

  3. #3
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    https://1drv.ms/u/s!AnbIfJxpPNWQj9w8...kAVRQ?e=Yace0c
    Ciao. Grazie mille di avermi risposto.
    Ho fatto come tu mi hai detto e mi da questo errore.
    Andrea
    Ultima modifica di dinasty : 24-08-2022 alle ore 16.29.06

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Quelli sembrano essere solo warning: $query non è definita la prima volta che la usi (riga 24, ma dice 43 perché li è dove la riga finisce), e degli elementi mancanti nell'array degli $ID — strano, da investigare, ma non abbastanza da bloccare tutto.

    Mi chiedo se concatenando tutte le UPDATE raggiungi un qualche limite di lunghezza, e la query si rompe. Ti suggerirei di eseguirle una per volta invece. Qualcosa di questo tipo:

    Codice PHP:
    # I punti di domanda segnano il posto per i valori che sotto passiamo ad 'execute'
    $query = "UPDATE Rose SET
    Fanta_Squadra = ?,
    Ruolo_Classico = ?,
    Ruolo = ?,
    /* [... il resto dei campi ...] */
    WHERE ID = ?"
    ;

    # Prepariamo la query...
    $statement = $pdo->prepare($query);

    # ...poi la eseguiamo più volte
    for($count = 0; $count < count($ID); $count++) {
    echo
    "Salviamo la squadra {$ID[$count]}";
    $statement->execute([
    $Fanta_Squadra[$count],
    $Ruolo_Classico[$count],
    /* [... il resto dei campi ...] */,
    $ID[$count]
    ));
    }
    Ultima modifica di dreadnaut : 24-08-2022 alle ore 19.34.50

  5. #5
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Ultima modifica di darbula : 24-08-2022 alle ore 23.05.30

  6. #6
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Buongiorno.
    oggi in giornata provo e ti faccio sapere. Grazie mille della risposta

  7. #7
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Ciao,
    Ho provato a fare come mi hai gentilmente indicato mettendo questo codice ma dalla foto indicata mi dà errore.https://1drv.ms/u/s!AnbIfJxpPNWQj9w9...D5p8A?e=7EqEsK
    il codice è:
    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    if(isset(
    $_POST["iD"]))
    {
    $connect = new PDO("mysql:host=localhost;dbname=my_dinasty", "root", "");
    $ID = $_POST["iD"];
    $Fanta_Squadra = $_POST["fanta_Squadra"];
    $Ruolo_Classico = $_POST["ruolo_Classico"];
    $Ruolo = $_POST["ruolo"];
    $Calciatore = $_POST["calciatore"];
    $Squadra = $_POST["squadra"];
    $Costo = $_POST["costo"];
    $Anni = $_POST["anni"];
    $AnniLettera = $_POST["anniLettera"];
    $Stipendio_Quota = $_POST["stipendio_Quota"];
    $Indebitamento = $_POST["indebitamento"];
    $Proprietario = $_POST["proprietario"];
    $Prestito = $_POST["prestito"];
    $SquadraDiProvenienza = $_POST["squadraDiProvenienza"];
    $AnniPrestito = $_POST["anniPrestito"];
    $Clausola = $_POST["Clausola"];
    $Academy = $_POST["academy"];

    $query = "UPDATE Rose
    SET Fanta_Squadra = ?,
    Ruolo_Classico = ?,
    Ruolo = ?,
    Calciatore = ?,
    Squadra = ?,
    Costo = ?,
    Anni = ?,
    AnniLettera = ?,
    Stipendio_Quota = ?,
    Indebitamento = ?,
    Proprietario = ?,
    Prestito = ?,
    SquadraDiProvenienza = ?,
    AnniPrestito = ?,
    Clausola = ?,
    Academy = ?'
    WHERE ID = ?"
    ;

    # Prepariamo la query...

    $statement = $connect->prepare($query);

    # ...poi la eseguiamo più volte
    for($count = 0; $count < count($ID); $count++) {
    echo
    "Salviamo la squadra {$ID[$count]}";
    $statement->execute([
    $Fanta_Squadra[$count],
    $Ruolo_Classico[$count],
    $Ruolo[$count],
    $Calciatore[$count],
    $Squadra[$count],
    $Costo[$count],
    $Anni[$count],
    $AnniLettera[$count],
    $Stipendio_Quota[$count],
    $Indebitamento[$count],
    $Proprietario[$count],
    $Prestito[$count],
    $SquadraDiProvenienza[$count],
    $AnniPrestito[$count],
    $Clausola[$count],
    $Academy[$count],
    $ID[$count]
    ]);
    }
    }
    ?>
    Ultima modifica di alemoppo : 25-08-2022 alle ore 15.44.56 Motivo: +tag php

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    C'è un ' imprevisto in fondo alla riga di "Academy", che rompe la query
    Codice PHP:
    Clausola = ?,
    Academy = ?'
    WHERE ID = ?";
    Suggerimento bonus: invece di scrivere if che contengono tutta la pagina:
    Codice PHP:
    if (isset($_POST["iD"])) {
    // mille righe
    }
    puoi invertire la condizione e terminare:
    Codice PHP:
    if (!isset($_POST["iD"])) {
    return;
    }

    // mille righe
    Così hai un semplice controllo in cima, ed il resto della pagina è più facile da leggere.
    Ultima modifica di dreadnaut : 25-08-2022 alle ore 20.03.46

  9. #9
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Ciao che stupido proprio non lo avevo visto quella maledetta ' ....
    Purtroppo, continua a non funzionare correttamente.
    Mi spiego meglio nell'ultima colonna academy a un certo punto non carica più correttamente e imposta di default tutti null.
    Ho fatto una prova modificando il valore impostando da null a 0 ma non lo setta.
    ho provato a fare una modifica nell'ultima riga della tabella non nell'ultima colonna academy ma nella colonna a sinistra la penultima con il nome Clausola e il valore che vado ad impostare lo setta correttamente.
    allego foto così tu possa vedere l'errore https://1drv.ms/u/s!AnbIfJxpPNWQj9w-...TNTiw?e=uXDifV

  10. #10
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    https://1drv.ms/u/s!AnbIfJxpPNWQj9w6...zBIhQ?e=OgJF40
    Qui ti allego la cartella dove trovi i tre file php con le ultimissime modifiche fatte compresa la tabella è caricato su phpmyadmin di altervista.
    Ti ringrazio ancora molte per tutto l'aiuto che mi stai dando.

  11. #11
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    La butto li, senza guardare il codice: non è che puoi dividere il file CSV, e caricarne metà per volta?

  12. #12
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Purtroppo, no perché la pagina la ho creata in modo che chi è addetto alla modifica di questa tabella, le modifiche che vengono fatte sono a random e si va cambiare questo o quello quando è necessario. Fare l'esporta e l'importa del file csv diventa complicato e più lungo per chi va a farlo. Nella maniera che ho creato con due click l'addetto può fare il tutto senza tanti sbatti.
    Quello che non capisco è perché si vada a inceppare in questo modo; non riesco a capire.
    Se riuscissi dare una occhiata mi faresti un favore, posso mandarti anche user e password in privato del sito dove va in esecuzione la pagina se dici. Non ci sono dati sensibili o cose del genere in questa tabella.
    Grazie Andrea

  13. #13
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da dinasty Visualizza messaggio
    Nella maniera che ho creato con due click l'addetto può fare il tutto senza tanti sbatti.
    Per essere pignoli, nella maniera che hai creato non funziona, quindi funzionare in modo più scomodo sarebbe comunque un miglioramento

    Comunque, continuiamo ad investigare! Il lato "salvataggio dati" mi sembra corretto. Un filo più intricato del necessario, ma fa quello deve fare se riceve i dati giusti. Ora dobbiamo verificare che riceva i dati giusti.

    Di nuovo ti rimando al Web Inspector del tuo browser, tab Rete. Prova a salvare il CSV: la richiesta al server apparirà li, e cliccandoci puoi controllare i dati che vengono inviati al server. Ci sono tutti i pezzi che servono, oppure il codice JavaScript sta perdendo qualcosa per strada?

    (Nota a parte: il lavoro che fai in JavaScript si faceva più facilmente in PHP, in modo meno fragile. Se non riusciamo ad aggiustarlo, rischiverlo così è un buon piano B.)
    Ultima modifica di dreadnaut : 26-08-2022 alle ore 19.09.48

  14. #14
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Se esistono massimo 17 colonne tra cui iD con valore int, per la creazione della tabella sono esattamente 17.

    Esempio 3 elementi massimi senza loop ma che può essere facilmente implementato semplicemente aggiungendo while dove c'è scritto loop?
    Codice PHP:
    <?php

    $var
    = 'O\'relly';
    $elemento1 = array();
    $elemento2 = array(0 => NULL);
    $elemento3 = array();

    //loop?
    $i = 0;
    $elemento3 = array('iD' => 1, 'primo' => $var, 'secondo' => $elemento2[0]);
    $elemento1[$i] = array('iD' => $elemento3['iD'], 'primo' => $elemento3['primo'], 'secondo' => $elemento3['secondo']);
    $i++;

    //dopo loop
    $elemento1 = array_combine(range(0, count($elemento1) - 1), $elemento1);
    $jsonobject = json_encode($elemento1);

    echo
    $jsonobject;
    $elemento1 = null;
    $elemento2 = null;
    $elemento3 = null;
    $jsonobject = null;
    unset(
    $elemento1, $elemento2, $elemento3, $jsonobject);

    /*Expected Result:
    [{"iD":1,"primo":"O'relly","secondo":null}]*/

    ?>
    che genera un json [{"iD":1,"primo":"O'relly","secondo":null}]

    Codice:
    var objson = data;
    var objavascript = $parse.JSON('"' + objson + '"');
    var objavascript = JSON.parse('"' + objson + '"');
    var objquery = $(objavascript);
    È trasformato in oggetto jquery, originariamente è oggetto json poi oggetto Javascript e infine oggetto jquery.
    Già success:function(data) contiene l'insieme di array json il che è sufficiente per scorrere.
    Codice:
    $(document).ready(function () {
               var jsonArray = [{ "Result": "True", "isAdmin": "True", "CustomerCode": "02184", "CompanyCode": "1" }];
               $(jsonArray).each(function (index, item) {
    
                   // each iteration
                   var result = item.Result;
                   var isAdmin = item.isAdmin;
                   var CustomerCode = item.CustomerCode;
                   var CompanyCode = item.CompanyCode;
                   alert(result + '|' + isAdmin + '|' + CustomerCode + '|' + CompanyCode);
               });
    
           });
    La $.each() funzione non è la stessa di $(selector).each() , che viene utilizzata per scorrere, esclusivamente, su un oggetto jQuery. La $.each() funzione può essere utilizzata per scorrere su qualsiasi raccolta, sia che si tratti di un oggetto o di una matrice. Nel caso di una matrice, al callback viene passato ogni volta un indice di matrice e un valore di matrice corrispondente. (È possibile accedere al valore anche tramite la this parola chiave, ma Javascript eseguirà sempre il wrapping del this valore Object anche se si tratta di una semplice stringa o di un valore numerico.) Il metodo restituisce il suo primo argomento, l'oggetto che è stato iterato.

    Vedi il codice si semplifica poiché length sarà diverso da 0 solo nel tuo caso abbia proprietà.
    Mentre la modifica dovrà avere il medesimo iD e almeno una o più proprietà poiché è necessario iD seguito da altro. Il medesimo iD perché è difficile scegliere un int non utilizzato e che non è superiore a AUTOINCREMENT dell'istruzione SQL.

    Cioè cambia fetch.php importa1.php

    Note* A partire da jQuery 3.0, $.parseJSON è deprecato. Per analizzare le stringhe JSON, utilizzare invece il metodo nativo JSON.parse.

    Che senso è var iD = [];
    se poi avvolta come
    var iD = $('.iD');
    in importa1.php

    Se nessun elemento corrisponde al selettore fornito, il nuovo oggetto jQuery è "vuoto"; cioè non contiene elementi e ha .length proprietà 0.
    Ultima modifica di darbula : 28-08-2022 alle ore 01.22.11

  15. #15
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Ciao; Darbula una super spiegazione grazie mille, anche dreadnaut ti ringrazio proverò ancora ancora e vediamo se prima o poi ci riuscirò.
    Andrea

  16. #16
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Ciao @dinasty a me funziona se imposto utf8 nel connettore mysqli e pdo_mysql (cissè verrà convertito impropriamente in ISO-8859-1 e poiché json richiede solo dati UTF-8 validi altrimenti restituisce false).
    Ultima modifica di darbula : 31-08-2022 alle ore 13.37.01

  17. #17
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Ciao allora io il file import lo ho settato così:
    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    try {
    $connection = new mysqli("localhost", "root", "", "my_dinasty");
    $connection->set_charset("utf8");
    $connection->query("SET NAMES 'utf8'");

    $ID = $_POST["iD"];
    $Fanta_Squadra = $_POST["fanta_Squadra"];
    $Ruolo_Classico = $_POST["ruolo_Classico"];
    $Ruolo = $_POST["ruolo"];
    $Calciatore = $_POST["calciatore"];
    $Squadra = $_POST["squadra"];
    $Costo = $_POST["costo"];
    $Anni = $_POST["anni"];
    $AnniLettera = $_POST["anniLettera"];
    $Stipendio_Quota = $_POST["stipendio_Quota"];
    $Indebitamento = $_POST["indebitamento"];
    $Proprietario = $_POST["proprietario"];
    $Prestito = $_POST["prestito"];
    $SquadraDiProvenienza = $_POST["squadraDiProvenienza"];
    $AnniPrestito = $_POST["anniPrestito"];
    $Clausola = $_POST["Clausola"];
    $Academy = $_POST["academy"];

    $query = "UPDATE Rose SET
    Fanta_Squadra = ?,
    Ruolo_Classico = ?,
    Ruolo = ?,
    Calciatore = ?,
    Squadra = ?,
    Costo = ?,
    Anni = ?,
    AnniLettera = ?,
    Stipendio_Quota = ?,
    Indebitamento = ?,
    Proprietario = ?,
    Prestito = ?,
    SquadraDiProvenienza = ?,
    AnniPrestito = ?,
    Clausola = ?,
    Academy = ?
    WHERE ID = ?"
    ;

    # Prepariamo la query...

    $statement = $connection->prepare($query);
    $statement->bind_param('sssssssssssssssss',$ID,$Fanta_Squadra,$Ruolo_Classico,$Ruolo,$Calciatore,$Squadra,$Costo,$Anni,$AnniLettera,$Stipendio_Quota,$Indebitamento,$Proprietario,$Prestito,$SquadraDiProvenienza,$AnniPrestito,$Clausola,$Academy);

    # ...poi la eseguiamo più volte
    for($count = 0; $count < count($ID); $count++) {

    $statement->execute([
    $Fanta_Squadra[$count],
    $Ruolo_Classico[$count],
    $Ruolo[$count],
    $Calciatore[$count],
    $Squadra[$count],
    $Costo[$count],
    $Anni[$count],
    $AnniLettera[$count],
    $Stipendio_Quota[$count],
    $Indebitamento[$count],
    $Proprietario[$count],
    $Prestito[$count],
    $SquadraDiProvenienza[$count],
    $AnniPrestito[$count],
    $Clausola[$count],
    $Academy[$count],
    $ID[$count]
    ]);
    }
    } catch (
    ArgumentCountError $e) {
    echo
    $e->getMessage();
    }
    ?>
    ma mi dice ancora errore: mysqli_stmt::execute() expects exactly 0 arguments, 1 given
    Ultima modifica di dreadnaut : 01-09-2022 alle ore 18.47.51 Motivo: + tag [php] attorno al codice

  18. #18
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Ho provato settarlo anche così:
    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    try {
    $connect = new PDO("mysql:host=localhost;dbname=my_dinasty;charset=utf8", "root", "");
    $connect->exec('SET NAMES utf8');
    $ID = $_POST["iD"];
    $Fanta_Squadra = $_POST["fanta_Squadra"];
    $Ruolo_Classico = $_POST["ruolo_Classico"];
    $Ruolo = $_POST["ruolo"];
    $Calciatore = $_POST["calciatore"];
    $Squadra = $_POST["squadra"];
    $Costo = $_POST["costo"];
    $Anni = $_POST["anni"];
    $AnniLettera = $_POST["anniLettera"];
    $Stipendio_Quota = $_POST["stipendio_Quota"];
    $Indebitamento = $_POST["indebitamento"];
    $Proprietario = $_POST["proprietario"];
    $Prestito = $_POST["prestito"];
    $SquadraDiProvenienza = $_POST["squadraDiProvenienza"];
    $AnniPrestito = $_POST["anniPrestito"];
    $Clausola = $_POST["Clausola"];
    $Academy = $_POST["academy"];
    $query = "UPDATE Rose SET
    Fanta_Squadra = ?,
    Ruolo_Classico = ?,
    Ruolo = ?,
    Calciatore = ?,
    Squadra = ?,
    Costo = ?,
    Anni = ?,
    AnniLettera = ?,
    Stipendio_Quota = ?,
    Indebitamento = ?,
    Proprietario = ?,
    Prestito = ?,
    SquadraDiProvenienza = ?,
    AnniPrestito = ?,
    Clausola = ?,
    Academy = ?
    WHERE ID = ?"
    ;

    # Prepariamo la query...

    $statement = $connect->prepare($query);

    # ...poi la eseguiamo più volte
    for($count = 0; $count < count($ID); $count++) {

    $statement->execute([
    $Fanta_Squadra[$count],
    $Ruolo_Classico[$count],
    $Ruolo[$count],
    $Calciatore[$count],
    $Squadra[$count],
    $Costo[$count],
    $Anni[$count],
    $AnniLettera[$count],
    $Stipendio_Quota[$count],
    $Indebitamento[$count],
    $Proprietario[$count],
    $Prestito[$count],
    $SquadraDiProvenienza[$count],
    $AnniPrestito[$count],
    $Clausola[$count],
    $Academy[$count],
    $ID[$count]
    ]);
    }
    } catch (
    ArgumentCountError $e) {
    echo
    $e->getMessage();
    }
    ?>
    Ultima modifica di dreadnaut : 01-09-2022 alle ore 18.48.42 Motivo: + tag [php] attorno al codice

  19. #19
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    mysqli_stmt::execute() da php 8.0.0 accetta opzionalmente $params mentre in precedenza senza nessun argomento.
    https://www.php.net/manual/en/pdostatement.execute.php
    Ultima modifica di darbula : 01-09-2022 alle ore 14.16.53

  20. #20
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Ciao darbula;
    cioè che non ho capito cosa dovrei fare?
    scusa la mia ingnoranza

  21. #21
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Visto che stiamo parlando di encoding e complicazioni, potresti provare una cosa? Nel file Rose.sql, prova ad sostituire la è sul rigo 162 con una semplice e.
    Codice:
    (162, 'Mainz Na gioia', 'B', 'A', 'Cissè', 'Ata', 0, 0, 'Gennaio 2023', 0, 0, 'X', '', '', '', '', 1),
    Quello è l'unico carattere non-base del file, quindi se il sospetto di Darbula è corretto, il file modificato dovrebbe caricare correttamente.

  22. #22
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Ciao fatto ma continua a non funzionare...

  23. #23
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Scusa, ho scritto "nel file Rose.sql" ma mi son sbagliato :facepalm:

    La modifica andrebbe fatta nel file CSV che carichi. Poi controllare quali caratteri possono creare problemi usando questa pagina: https://pages.cs.wisc.edu/~markm/ascii.html
    Ultima modifica di dreadnaut : 01-09-2022 alle ore 21.42.41

  24. #24
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Su PDO va bene exec('SET NAMES utf8'):, mentre in mysqli poi va seguito da set_charset('utf8'); questo è per impostare il charset direttamente in php che funziona come cliente per mysql.
    Sia nel file fetch.php che importa.php
    Ti consiglio di usare il vecchio importa.php che non usava prepare e bind params. Poiché è un test (dapprima ti assicuri che funzioni mentre poi farai le modifiche, ma dopo).
    Però effettivamente dovrò indagare perché su mysqli SET NAMES utf8 non funziona (almeno con mysql 8).
    Ovviamente su phpMyAdmin puoi importare il file Rose.sql poiché usa anch'esso SET NAMES utf8 dovrebbe funzionare.
    Ultima modifica di darbula : 01-09-2022 alle ore 22.10.21

  25. #25
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Buongiorno Dreadnaut.
    Sono andato su phpmyadmin ho fatto esporta della tabella rose in CSV e lo fo caricato sulla pagina che mi hai indicato e mi esce.No non-ASCII characters found :D
    Andrea

  26. #26
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Buongiorno darbula.
    Ora è in esecuzione il secondo sul file import.php

    $connect = new PDO("mysql:host=localhost;dbname=my_dinasty;charse t=utf8", "root", "");
    $connect->exec('SET NAMES utf8');

    Mentre su fetch.php lo ho settato così

    <?php
    $connection = new mysqli("localhost", "root", "", "my_dinasty");
    $connection->set_charset("utf8");
    $connection->query("SET NAMES 'utf8'");
    $query = "SELECT * FROM Rose order by Fanta_Squadra, Ruolo_Classico, ID";
    $result = $connection->query($query);
    while ($row = $result->fetch_array())
    {
    $row_data[] = array(
    'iD' => $row[0],
    'fanta_Squadra' => $row[1],
    'ruolo_Classico' => $row[2],
    'ruolo' => $row[3],
    'calciatore' => $row[4],
    'squadra' => $row[5],
    'costo' => $row[6],
    'anni' => $row[7],
    'anniLettera' => $row[8],
    'stipendio_Quota' => $row[9],
    'indebitamento' => $row[10],
    'proprietario' => $row[11],
    'prestito' => $row[12],
    'squadraDiProvenienza' => $row[13],
    'anniPrestito' => $row[14],
    'Clausola' => $row[15],
    'academy' => $row[16]
    );
    }
    $output = array(
    'row_data' => $row_data
    );

    echo json_encode($output);

    ?>

  27. #27
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Per l'importazione non causa nessunissimo problema.
    L'unico problema è durante l'esporta che ad X riga nella colonna Academy va in tilt.
    Ripeto la cosa strana è che non carica solo e solamente la colonna Academy da X query perché tutti gli altri dati li carica fino alla fine correttamente.
    Andrea

  28. #28
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Su fetch manca anche il secondo come richiesto qui https://forum.it.altervista.org/php-...ml#post1482453 altrimenti rimane Latin1
    Codice:
    $connection->query("SET NAMES utf8");
    $connection->set_charset('UTF8');
    Ultima modifica di darbula : 02-09-2022 alle ore 14.56.20

  29. #29
    dinasty non è connesso Utente Blog
    Data registrazione
    22-07-2021
    Messaggi
    20

    Predefinito

    Ciao, non capisco mi hai riportato quello del file import non del file fetch.
    nel file fetch è così riportato:

    Codice PHP:
    $connection = new mysqli("localhost", "root", "", "my_dinasty");
    $connection->set_charset("utf8");
    $connection->query("SET NAMES 'utf8'");
    Quale seconda parte manca?
    Ultima modifica di dreadnaut : 03-09-2022 alle ore 11.12.48 Motivo: + tag [php] attorno al codice

  30. #30
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    È in ordine inverso.
    Da mysql 8.0 utf8 è deprecato e anche alias di utf8mb3 probabilmente in futuro utf8 diventerà alias di utf8mb4.
    A partire da MySQL 8.0.28, utf8mb3 viene visualizzato anche al posto di utf8 nelle colonne delle tabelle dello schema di informazioni e nell'output delle istruzioni SQL SHOW.
    Con la funzione di mysqli set_charset imposti il cliente mysql (direttamente dentro il codice sorgente di php) con quel charset, Nel caso di esito positivo non c'è differenza, mentre negativo? Meglio preservare set_charset per ultimo,
    Comunque ti funziona il codice? Se con dubbi prova singolarmente il codice, fai puntare il browser su fetch.php, e così via per i tuoi script. Magari usando var_dump invece del semplice echo output su schermo.
    Ultima modifica di darbula : 06-09-2022 alle ore 23.22.54

Regole di scrittura

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