JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
add db_insert_assoc() and db_update_assoc()
authorJason Woofenden <jason@jasonwoof.com>
Tue, 6 Apr 2010 01:15:10 +0000 (21:15 -0400)
committerJason Woofenden <jason@jasonwoof.com>
Tue, 6 Apr 2010 03:39:12 +0000 (23:39 -0400)
TODO
db.php

diff --git a/TODO b/TODO
index 6baaba7..54dc266 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,2 +1,4 @@
+       db_reposition(): add parameter for "where clause" so it can work on any subset of the rows
+       metaform: change php so it stores/passes form/db data in hashes instead of locals
        finish and test "delete" checkbox for images
        test db stuff with images
        finish and test "delete" checkbox for images
        test db stuff with images
diff --git a/db.php b/db.php
index c93e5f3..42a21cf 100644 (file)
--- a/db.php
+++ b/db.php
@@ -256,6 +256,22 @@ function db_insert($table, $columns, $values) {
        
        db_insert_ish('INSERT', $table, $columns, $values);
 }
        
        db_insert_ish('INSERT', $table, $columns, $values);
 }
+
+# like db_insert() above, but instead of passing columns and data separately,
+# you can pass one array with the column names as keys and the data as values
+function db_insert_assoc($table, $data) {
+       $args = func_get_args();
+       $args = array_slice($args, 2);
+       $columns = array();
+       $values = array();
+       foreach($data as $key => $value) {
+               $columns[] = $key;
+               $values[] = $value;
+       }
+       array_unshift($args, $table, join(',', $columns), $values);
+       call_user_func_array('db_insert', $args);
+}
+
 # same as above, except uses the "replace" command instead of "insert"
 function db_replace($table, $columns, $values) {
        if(!is_array($values)) {
 # same as above, except uses the "replace" command instead of "insert"
 function db_replace($table, $columns, $values) {
        if(!is_array($values)) {
@@ -352,6 +368,23 @@ function db_update($table, $columns, $values) {
        db_send_query($sql);
 }
 
        db_send_query($sql);
 }
 
+# like db_update() above, but instead of passing columns and data separately,
+# you can pass one array with the column names as keys and the data as values
+function db_update_assoc($table, $data) {
+       $args = func_get_args();
+       $args = array_slice($args, 2);
+       $columns = array();
+       $values = array();
+       foreach($data as $key => $value) {
+               $columns[] = $key;
+               $values[] = $value;
+       }
+       array_unshift($args, $values);
+       array_unshift($args, join(',', $columns));
+       array_unshift($args, $table);
+       call_user_func_array('db_update', $args);
+}
+
 # pass args for printf-style where clause as usual
 function db_delete($table, $where = '') {
        $sql = "DELETE FROM $table";
 # pass args for printf-style where clause as usual
 function db_delete($table, $where = '') {
        $sql = "DELETE FROM $table";