login  Naam:   Wachtwoord: 
Registreer je!
Scripts > PHP > Database tools > INSERT query builder dmv value array


Reacties op het script INSERT query builder dmv value array

Offline  Stijn
Gepost op: 19 september 2007 - 13:44
PHP expert



Waarom insertFunction.. insert() is toch een betere naam 

Ook zou ik een 5e parameter geven bij de eerste functie. Die 5e parameter is dan het type database dat je wilt gebruiken. Aangezien dit voor PDO geen probleem is. Je kan als default waarde 'mysql' nemen.

Offline  Thomas
Gepost op: 19 september 2007 - 14:33
Moderator



Wellicht beter om arrays + implode te gebruiken ipv $looped?

Offline  Richard
Gepost op: 01 oktober 2007 - 13:53
Crew algemeen



En al helemaal array_key_exists weghalen en isset gebruiken.

Offline  Grayen
Gepost op: 29 december 2007 - 13:43
PHP ver gevorderde



Misschien is het ook nog handig om zoiets als hieronder toe te voegen.
Zo voorkom je dat die query om de velden van de tabel op te halen vaker dan een keer wordt uitgevoerd.

  1. static private $aTableFields = array();
  2.  
  3. public function insertFunction()
  4. {
  5. ...
  6.  
  7. if (!isset(self::$aTableFields[$table])
  8. {
  9. self::$aTableFields[$table] = $this->db->query("SHOW COLUMNS FROM " . $table);
  10. }
  11.  
  12. ...
  13.  
  14. foreach (self::$aTableFields[$table] as $r)
  15. {
  16. $aFields[$r[0]] = '';
  17. }
  18.  
  19. ...
  20. }

Offline  zwobbel
Gepost op: 14 mei 2008 - 13:05
PHP gevorderde



Bij mij werkt het gewoonweg niet, het doet niets???

Offline  marten
Gepost op: 14 mei 2008 - 13:10
Beheerder



Heb je genoeg rechten op je database om het SHOW statement uit te voeren?

Offline  zwobbel
Gepost op: 14 mei 2008 - 14:19
PHP gevorderde



Ja alle rechten.
Ik weet niet waarom maar als ik iets invoer krijg ik een lege string in het veld waar ik iets wil invoeren.

Ik heb het op deze mannier gemaakt:
  1. <?php
  2. class DataInterface
  3. {
  4. private $db;
  5. private $verbindingOk;
  6. private $dbdata;
  7. private $result;
  8. static private $aTableFields = array();
  9.  
  10. public function __construct()
  11. {
  12. $this->verbindingOk = false;
  13.  
  14. if($this->db = mysqli_connect("localhost", "zwobbel", "test"))
  15. $this->verbindingOk = true;
  16.  
  17. mysqli_select_db($this->db,"yves");
  18. }
  19.  
  20. public function __destruct()
  21. {
  22. mysqli_close($this->db);
  23. }
  24.  
  25. public function isVerbonden()
  26. {
  27. return $this->verbindingOk;
  28. }
  29.  
  30. public function Verbinding()
  31. {
  32. return $this->db;
  33. }
  34.  
  35. public function insertFunction($values, $table) {
  36. $sQuery_fields = "SHOW COLUMNS FROM " . $table;
  37. try {
  38.  
  39.  
  40. if (!isset(self::$aTableFields[$table]))
  41. {
  42. self::$aTableFields[$table] = $this->db->query("SHOW COLUMNS FROM " . $table);
  43. }
  44.  
  45. $sFields = '';
  46. $aFields = array();
  47.  
  48. $sValues = '';
  49. $looped = 1;
  50. $count = count($values);
  51.  
  52. foreach (self::$aTableFields[$table] as $r)
  53. {
  54. $aFields[$r[0]] = '';
  55. }
  56.  
  57. foreach ($values as $key => $value) {
  58. if (array_key_exists($key, $aFields)) {
  59. if ($looped < $count) {
  60. $sFields .= $key . ', ';
  61. $sValues .= "'" .$value. "',";
  62. } elseif ($looped == $count) {
  63. $sFields .= $key;
  64. $sValues .= "'" .$value. "'";
  65. }
  66. }
  67. $looped++;
  68. }
  69.  
  70. $sQuery = "INSERT INTO " .$table. " (" .$sFields. ") VALUES (" .$sValues. ")";
  71. $rResult = $this->db->query($sQuery);
  72. return $aFields;
  73. } catch (Exception $e) {
  74. return false;
  75. }
  76. }
  77.  
  78. }
  79. ?>


Enkel aanvullende informatie, vragen en antwoorden op vragen zijn welkom.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.05s