# Copyright (C) 2006 Jason Woofenden
#
-# This file is part of wfpl.
-#
-# wfpl is free software; you can redistribute it and/or modify it under the
-# terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 2.1 of the License, or (at your option)
-# any later version.
-#
-# wfpl is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
-# more details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with wfpl; if not, write to the Free Software Foundation, Inc., 51
-# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
require_once('code/wfpl/encode.php');
# This function does the work, but takes the parameters in an array
function _db_printf($str, $args) {
- $args = array_reverse($args); # because array_pop() takes from the end
$out = '';
while($str) {
$pos = strpos($str, '%');
$str = substr($str, $pos + 2);
if($chr == '"') {
- $out .= '"' . enc_sql(array_pop($args)) . '"';
+ $out .= '"' . enc_sql(array_shift($args)) . '"';
} elseif($chr == 's') {
- $out .= enc_sql(array_pop($args));
+ $out .= enc_sql(array_shift($args));
} elseif($chr == 'i') {
- $int = format_int(array_pop($args));
+ $int = format_int(array_shift($args));
if($int == '') $int = '0';
$out .= $int;
} else {
return $rows;
}
+# like db_get_rows, but return array of hashes.
+function db_get_assocs($table, $columns, $where = '') {
+ $args = func_get_args();
+ $args = array_slice($args, 3);
+ $result = db_send_get($table, $columns, $where, $args);
+
+ $rows = array();
+ while($row = mysql_fetch_assoc($result)) {
+ $rows[] = $row;
+ }
+
+ mysql_free_result($result);
+
+ return $rows;
+}
+
function db_get_column($table, $columns, $where = '') {
$args = func_get_args();
$args = array_slice($args, 3);
return $row;
}
+# like db_get_row, but return a hash.
+function db_get_assoc($table, $columns, $where = '') {
+ $args = func_get_args();
+ $args = array_slice($args, 3);
+ $result = db_send_get($table, $columns, $where, $args);
+
+ $row = mysql_fetch_assoc($result);
+
+ mysql_free_result($result);
+
+ return $row;
+}
+
function db_get_value($table, $columns, $where = '') {
$args = func_get_args();
$args = array_slice($args, 3);
}
function db_count($table, $where = '') {
- return db_get_value($table, 'count(*)', $where);
+ $args = func_get_args();
+ array_splice($args, 1, 0, array('count(*)'));
+ return call_user_func_array('db_get_value', $args);
}
# call either of these ways:
db_send_query($sql);
}
-# to be consistant with the syntax of the other db functions, $values can be an
+# to be consistent with the syntax of the other db functions, $values can be an
# array, a single value, or multiple parameters.
#
-# as usual the where clause stuff is optional, but it will ofcourse update the
+# as usual the where clause stuff is optional, but it will of course update the
# whole table if you leave it off.
#
# examples:
$num_fields = count($columns);
if(is_array($values)) {
+ $values = array_values($values);
$args = array_slice($args, 1);
} else {
$values = array_slice($args, 0, $num_fields);
$args = array_slice($args, 1);
$sql .= ' ';
- # any left for where claus arguments?
+ # any left for printf arguments?
if($args) {
$sql .= _db_printf($where, $args);
} else {