Requête PDO prepare , update, array
maverick13
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
maverick13 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
maverick13 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'aimerais réaliser un truc du genre :
Je sait que : prepare('UPDATE recettes SET *') n"est pas bon.
Mais j'aimerais ne pas avoir à spécifier chaque champ de ma base de donné et tous simplement toute l'updater avec les donnés de l'array !
j'ai beaucoup de colonne dans ma BDD et je me voie mal toute les spécifier avec un genre de :
exec('UPDATE 'comptes' SET 'solde' = 'solde', etc... , etc...
Merci de vos lumières.
( chez cherché quelques heures sans rien trouver d'intéressant )
j'aimerais réaliser un truc du genre :
$value =array ("","$cc","$dd","$ee","$ff"); $Sql = new Sql(SQL_HOST,SQL_DB,SQL_USER,SQL_PASS); $req = $Sql->prepare('UPDATE recettes SET *'); if($Sql->execute($req,$value)) return messConfirm('Tous est GOod'); else return messError('Etrange...'); // on ferme la connexion mysql_close();
Je sait que : prepare('UPDATE recettes SET *') n"est pas bon.
Mais j'aimerais ne pas avoir à spécifier chaque champ de ma base de donné et tous simplement toute l'updater avec les donnés de l'array !
j'ai beaucoup de colonne dans ma BDD et je me voie mal toute les spécifier avec un genre de :
exec('UPDATE 'comptes' SET 'solde' = 'solde', etc... , etc...
Merci de vos lumières.
( chez cherché quelques heures sans rien trouver d'intéressant )
A voir également:
- Update array
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Wsus offline update - Télécharger - Systèmes d'exploitation
- Nettoyage windows update - Guide
2 réponses
bonjour,
j'ai une idée mais je ne sais pas si ce est très propre...
j'ai une idée mais je ne sais pas si ce est très propre...
<?php function update(&$Sql,$table,$vals,$columnsIgnored = array()) { /* 1 - $Sql : Ressource -> reférence Class Sql 2 - $table : String -> nom de la table 3 - $vals : Array -> valeurs correspondant aux champs dans l'ordre en sautant ceux qui sont passéscandir 4 - $columnsIgnored : Array -> Colonnes ignorées retourne un objet sous la forme ou false si il n'y a pas de champs $o->updateSet contenant la partie SET de la requête 'champs1=:champs1,champs2=:champs2,champs3=:champs3' $o->values un array sous la forme $o->values = array(champs1 => 'value1',champs2 => 'value2',champs3 => 'value3') */ $reqChamps = $Sql->prepare('SHOW COLUMNS FROM '.$table); $Sql->execute($reqChamps); $o->updateSet = ''; $o->values = array(); $i = 0; while($data = $reqChamps->fetch(PDO::FETCH_OBJ)) { if(in_array($data->Field,$columnsIgnored) || !isset($vals[$i])) continue; $o->updateSet .= $data->Field.'=:'.$data->Field.','; $o->values[$data->Field] = $vals[$i]; $i++; } $reqChamps->closeCursor(); $o->updateSet = substr($o->updateSet,0,-1); if($o->updateSet === false) return false; return $o; } $table = 'user'; $values = array(1,2,3,4,5,6,7,8,9,10); $Sql = new Sql(SQL_HOST,SQL_DB,SQL_USERREAD,SQL_PASSREAD); $o = update($Sql,$table,$values,array('id','name')); $o->values['id'] = 20; $req = $Sql->prepare('UPDATE '.$table.' SET '.$o->updateSet.' WHERE id =:id LIMIT 1'); $Sql->execute($req,$o->values); $req->closeCursor(); ?>
Atropa
Messages postés
1940
Date d'inscription
Statut
Membre
Dernière intervention
274
c'est un exemple d'utilisation avec une table user et les valeurs sont bidons
Dommage je croyais que si ont suivait l'ordre d'apparition des colonnes on pouvait faire comme :
Avec un update à la place. ...On dirais que non, dommage.
Merci du code Atropa je vais l'étudier.
$value= array("","$today","$bb","$cc","$dd","$ee"); $Sql = new Sql(SQL_HOST,SQL_DB,SQL_USER,SQL_PASS); $req = $Sql->prepare('INSERT INTO recettes VALUES(?,?,?,?,?,?)'); if($Sql->execute($req,$value)) return messConfirm('Tous est GOod');
Avec un update à la place. ...On dirais que non, dommage.
Merci du code Atropa je vais l'étudier.