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

    Separare le keys e values di un array in due stringhe diverse

    Salve a tutti,
    qualcuno saprebbe aiutarmi riguardo il mio problema? Avrei un array che ha diversi nomi come keys e ogni key ha un proprio valore. Quello che dovrei fare è separare in un unica stringa tutte le keys dell'array ed in un'altra stringa tutti i valori dell'array in modo da poter inserire i dati dell'array in una singola riga di database mysql. I nomi delle keys corrispondono ai nomi delle colonne del db, e i valori dell'array sono i valori che vanno immessi nella riga del database.

    Codice esempio array (non badate alla sicurezza, la implementerò in seguito):
    Codice PHP:
    //provenienti dal form:    
    $username $_REQUEST['user'];     
    $pass $_REQUEST['pass'];     
    $name $_REQUEST['name'];

        
    $person = array(
            
    "username" => $username,
            
    "pass" => $pass,
            
    "name" => $name);

    //funzioni di connessione al database, non riportate qui di seguito

    //cio che avevo fatto per mettere i dati nel db:
          
    foreach($person as $key => $value) {
              
              
    $query "INSERT INTO $table ($key) VALUES ($value)";
              
    mysql_query($query) or die(mysql_error());
          } 
    Penso che il mio errore sta nel fatto che quando compongo la query, la variabile $key dovrebbe essere una stringa contente tutte le keys dell'array $person; come anche $value:

    Codice PHP:
    $query "INSERT INTO $table ($key) VALUES ($value)"
    E' possibile usare implode() per creare una stringa contenente solo le keys dell'array separate da ", " e una contenente solo i valori dell'array?

    Ringrazio per il vostro aiuto,

    Beaveride

  2. #2
    E se con il ciclo ti prepari solo i valori? E' una soluzione.



    Codice PHP:
        foreach($person as $key => $value) {
    $keys.=$key.",";
    $values.=$value.",";         

    //qui devi fare il controllo che se è l'ultimo ciclo devi omettere l'ultima virgola        
          
    }

    $query "INSERT INTO $table ($keys) VALUES ($values)";
              
    mysql_query($query) or die(mysql_error()); 

  3. #3
    Ehi,
    grazie per l'aiuto! L'ho scritto un poco diverso, ma come stringa produce lo stesso:

    Codice PHP:
          $column "";
          
    $item "'";
          
    $i 1;
          foreach (
    $person as $key=>$value) {
                  if (
    $i == 1) {
                      
    $column $key;
                      
    $item $item.$value."'";
                      
    $i++;
                  }
                  else {
                      
    $column $column.", ".$key;
                      
    $item $item.", '".$value."'";
                      
    $i++;
                  }
              }
          
    $query1 "INSERT INTO person ($column) VALUES ($item)";
              
    mysql_query($query1) or die(mysql_error()); 
    Se non erro, i Values devono essere tra due ' ' ? Come l'ho scritto io, vengono sempre due ' ' intorno al valore. Pero' mi esce sempre un errore di sintassi mysql. Forse va messo un \ prima del ' ?

  4. #4
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Prova a stampare a video la query invece di eseguirla e vedi se c'è qualcosa di strano.

    Un possibile errore è che VALUES possono essere stringhe ed allora vanno anch'essi posti tra apici (per dire al mySQL dove iniziano e finiscono).

  5. #5
    Ciao,

    prova
    Codice PHP:
    //provenienti dal form:     
    $username $_REQUEST['user'];      
    $pass $_REQUEST['pass'];      
    $name $_REQUEST['name']; 

        
    $person = array( 
            
    "username" => $username
            
    "pass" => $pass
            
    "name" => $name); 

    //funzioni di connessione al database, non riportate qui di seguito 

    //cio che avevo fatto per mettere i dati nel db: 

              
    $query "INSERT INTO $table (".implode(",",array_keys($person)).") VALUES ('".implode("','",array_values($person))."')"
    echo 
    $query;
              
    mysql_query($query) or die(mysql_error()); 
    Magari fai un real escape prima (gia' nell'array).

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.