Requête PDO prepare , update, array
Fermé
maverick13
Messages postés
9
Date d'inscription
lundi 5 novembre 2012
Statut
Membre
Dernière intervention
6 avril 2013
-
11 déc. 2012 à 01:22
maverick13 Messages postés 9 Date d'inscription lundi 5 novembre 2012 Statut Membre Dernière intervention 6 avril 2013 - 11 déc. 2012 à 15:41
maverick13 Messages postés 9 Date d'inscription lundi 5 novembre 2012 Statut Membre Dernière intervention 6 avril 2013 - 11 déc. 2012 à 15:41
A voir également:
- Update array
- Windows update 0x80070643 - Accueil - Windows
- Windows update bloqué - Guide
- Asus live update - Télécharger - Utilitaires
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Nettoyage windows update - Guide
2 réponses
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
Modifié par Atropa le 11/12/2012 à 06:40
Modifié par Atropa le 11/12/2012 à 06:40
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(); ?>
maverick13
Messages postés
9
Date d'inscription
lundi 5 novembre 2012
Statut
Membre
Dernière intervention
6 avril 2013
11 déc. 2012 à 15:41
11 déc. 2012 à 15:41
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.
11 déc. 2012 à 06:34