Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Come inserire array in un campo tabella sql?

    Buongiorno,
    devo inserire un array di array con diversi valori all' interno di un campo della mia tabella SQL, come posso fare?
    il formato dell' array è questo:

    codice:
    [{
     "Id": "1",
     fileListato": "AB1"},{
     "Id": "100",
     fileListato": "AB1"},
    {
     "Id": "1000",
     fileListato": "AB1"}
    in che modo posso fare a rendere il mio array in un formato inseribie in una tabella con una semplice insert?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,171
    Hai un array JSON, salvalo così in un campo text.

    Oppure se parti da un array PHP lo puoi serializzare ed inserire come una stringa in un campo text, per poi deserializzarlo quando lo recuperi.
    serialize()
    unserialize()

    Ma metterci un JSON va bene.
    Earth2: 3QCNSPFQUH

  3. #3
    codice:
      foreach($quiz_arr as $key=>$value){
                $quiz_item2=array(
                    "Id" => $value["Id"],
                    "fileListato" =>$value["fileListato"]
                );
                array_push($array_test, $quiz_item2);
            }
        
    
    
            $quiz_arr=serialize($array_test);
    il risultato del serialize è questo:

    quiz_arr: a: 4: {i: 0;a: 2: {s: 2: "Id";s: 1: "1";s: 11: "fileListato";s: 3: "AB1";
    }i: 1;a: 2: {s: 2: "Id";s: 2: "10";s: 11: "fileListato";s: 3: "AB1";
    }i: 2;a: 2: {s: 2: "Id";s: 3: "100";s: 11: "fileListato";s: 3: "AB1";
    }i: 3;a: 2: {s: 2: "Id";s: 4: "1000";s: 11: "fileListato";s: 3: "AB1";
    }
    }

    non viene effettuata la INSERT
    Ultima modifica di Maxilboss93; 15-04-2021 a 12:14

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,171
    Nel modo in cui esegui la insert, che non mostri.
    Comunque, va benissimo metterci anche direttamente l'array JSON, che è una semplice stringa, non serve serializzarlo, sono gli array php che vanno serializzati perché non sono stringhe.
    Earth2: 3QCNSPFQUH

  5. #5
    codice:
     $cSQL =myLib::genSQL("INSERT", "quizAula".$id_sedeClienteNeca,
            [   'id_allievo'=>$selezioni["id_allievo"],
                'Nome'=>$selezioni["Nome"],
                'id_sedeClienteNeca' => $selezioni["id_sedeClienteNeca"], 
                'Esercitazione'=> $quiz_arr,                                    
                'Partecipa'=>$selezioni["Partecipa"],
                'N_quesiti'=>$lunghezza_quiz,
                'quesiti_risposti'=>0,
                'Stato'=>0
            ]);
        
            $insert = myDB::execSQL($cSQL, $conn);
    la classe della insert funziona perchè la uso in altri posti, comunque se non faccio serialize mi da errore
    <b>Notice</b>: Array to string conversion...
    e sul db mi fa l' insert inserendo però nel campo la parola Array invece che l' array coi valori


    Ho provato anche con
    $quiz_arr=json_encode($quiz_arr)
    ma non fa più la insert se lo faccio
    Ultima modifica di Maxilboss93; 15-04-2021 a 12:27

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    80
    Array to string conversion significa conversione stringa da array (non permessa).
    Array è più evoluto del semplice testo, json è del testo con codifica UTF-8.
    Dovresti abilitare gli errori nel tuo php.ini probabilmente mysql ritorna errore di sintassi causa apice doppio di una stringa json.
    codice:
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(-1);
    o più probabilmente lavori con codice php legacy e dovrai inteffacciarti con la libreria mysqli impostare il charset e anche ulteriori query SET NAMES utf8 poiché con la classe PDO potrebbe essere impossibile impostare il charset.
    Esempio array:
    codice:
    $array = array(); //Buona norma inizializzare array
    //se si usa la sintassi corta
    $array[0] = 'testo';
    echo $array; //Notice Array to string conversion
    echo $array[0]; // testo
    Ultima modifica di darbula; 15-04-2021 a 14:56

  7. #7
    Ho postato solo le parti di codice salienti è ovvi che noon ho messo tutti i controlli e le inizializzazioni ma ti assicuro che ci sono,
    comunque ho trovato una funzione che faceva più o meno a caso mio e la sto adattando.

    codice:
    function subArraysToString($ar, $sep = ', ') {
        $str = '';
        foreach ($ar as $val) {
            $str .= implode($sep, $val);
            $str .= $sep; // add separator between sub-arrays
        }
        $str = rtrim($str, $sep); // remove last separator
        return $str;
    }

Tag per questa discussione

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 © 2021 vBulletin Solutions, Inc. All rights reserved.