login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Database tools > Update query builder

Update query builder

Auteur: marten - 09 december 2009 - 16:41 - Gekeurd door: Koen - Hits: 3591 - Aantal punten: 4.00 (1 stem)



Update query builder

Universele functie om via een array een tabel te updaten. Onmisbaar in een database class.

Voordelen:
* Niet voor ieder onderdeel een aparte modify functie.
* Controle of het veld uit de array bestaat.
* Toepasbaar op allerlei databases icm PDO

Voorbeeld gebruik
  1. $this->pdo = $db; // Natuurlijk moet er een db connectie zijn. Ik gebruik hier PDO
  2.  
  3. $aArray['veld1'] = 'Waarde1';
  4. $aArray['veld2'] = 'Waarde2';
  5. $aArray['veld3'] = 'Waarde3';
  6. $aArray['veld4'] = 'Waarde4';
  7.  
  8. $oFoo->modify('table', 'idVeld', 12, $aArray);

Code:
  1. /**
  2. * Update query builder
  3. *
  4. * @author Marten van Urk .: ComSi www.comsi.nl :.
  5.   * @package Invoice
  6. * @subpackage Products
  7.   * @param String $table Table which will be updated
  8.   * @param String $idField The updated key field (for example the auto increment field) Will be used in combination with $id for the where statement
  9. * @param Integer $id The id of the given field
  10. * @param Array $aUpdateValues
  11. * @since 1.0
  12. * @return Boolean On succes the boolean true will be returned otherwise, on a fail the boolean false will be returned.
  13. */
  14. static private $tableLoaded = array();
  15.  
  16. public function modify($table, $idField, $id, $aUpdateValues = array()) {
  17. if(count($aUpdateValues ) == 0) {
  18. return false;
  19. }
  20.  
  21. try {
  22. /**
  23.   * Check if query is runned before
  24.   **/
  25. if(!isset($this->tableLoaded[$table])) {
  26. $this->tableLoaded[$table] = $this->db->query("SHOW COLUMNS FROM " . $table);
  27. }
  28.  
  29. $aFields = array();
  30. foreach ($this->tableLoaded[$table] as $r) {
  31. $aFields[$r[0]] = '';
  32. }
  33. } catch (Exception $e) {
  34. return false;
  35. }
  36.  
  37. foreach ($aUpdateValues as $key => $value) {
  38. if(array_key_exists($key, $aFields)) {
  39. if(ctype_digit($value)) {
  40. $sets[] = '`'.$key.'` = ' .$value;
  41. } else {
  42. $sets[] = '`'.$key.'` = \''.$value.'\'';
  43. }
  44. }
  45. }
  46.  
  47. $sQuery = "UPDATE `" .$table. "` " . 'SET ' .implode(', ', $sets) . " WHERE " .$idField. " = " . $id;
  48.  
  49. try {
  50. $rResult_update = $this->db->query($sQuery);
  51. return true;
  52. } catch (Exception $e) {
  53. return false;
  54. }
  55. }
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (5)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.032s