2010-02-03 35 views
1

Je crée une couche abstraite de base de données très petite, je veux envoyer un tableau de variables que j'ai obtenu à partir d'un formulaire, et générer une instruction sql de mise à jour et finalement l'exécuter. Qu'est-ce que je mets sur l'avant-dernière ligne ci-dessous? par exemple.génération de statuts de mise à jour mysql php à partir des valeurs de formulaire

$table name = "user"; 
$username = $_post['username']; 
$password = $_post['password']; 
$email = $_post['email']; 
$array = (username=>$username, password=>$password, email=>$email); 
$query = "update $this->tableName". 
$query = """" The value from the assc array in the form of database value='form value' 
$query = "WHERE condition"; 

Répondre

3

Vous pouvez utiliser une boucle foreach() pour générer votre clause de requête à partir de votre tableau. Notez que vous devez déclarer votre tableau avec la construction array() et citez vos clés associatives.

//... 
$array = array('username'=>$username, 'password'=>$password, 'email'=>$email); 
$query = "update ".$this->tableName." SET "; 
foreach($array as $field => $value) { 
    $query .= "`".$field."`='".mysql_real_escape_string($value)."',"; 
} 
//knock off trailing comma 
$query = substr($query,0,-1); 
$query .= " WHERE condition"; 
+0

Merci beaucoup cela fonctionne –

+0

Je suis penser à l'envoyer comme un tableau multidimensionnel par exemple $ multi = array(); $ multi [] = array ($ customer_id, $ nom_domaine, $ purchase_date, $ expiry_date, $ fournisseur); $ multi [] = array ("c_id", "id_domaine", "purchase_date", "expiry_date", "vendeur"); comment pouvez-vous implémenter le foreach sur ce type de tableau? –

0

Vous pouvez utiliser quelque chose comme:

$a = array(); 
foreach($array as $key => $value) 
{ 
    $a[] = $key . " = '" . mysql_real_escape_string($value) ."'"; 
} 
$query = join(',', $a); 

mais vous devez prendre soin des cas particuliers, par exemple lorsque la valeur est nulle ou une date