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
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);
 }
+
+# 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)) {
@@ -352,6 +368,23 @@ function db_update($table, $columns, $values) {
        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";