JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
db: added %f for floats in sql
authorJason Woofenden <jason@jasonwoof.com>
Fri, 5 Aug 2011 15:27:01 +0000 (11:27 -0400)
committerJason Woofenden <jason@jasonwoof.com>
Fri, 5 Aug 2011 15:36:35 +0000 (11:36 -0400)
Now you can put %f in your db_* calls, like so:

$rows = db_get_assocs('hammers', 'weight,length', 'where weight > %f', $min_weight);

db.php

diff --git a/db.php b/db.php
index 6f8b38d..ddecff3 100644 (file)
--- a/db.php
+++ b/db.php
@@ -95,6 +95,7 @@ function db_send_query($sql) {
 #
 # %%  put a % in the output
 # %i  put an integer in the output (strips non-numeric digits, and puts in 0 if blank)
+# %f  put a floating point value in the output (strips non-numeric digits, puts in 0.0 if not valid)
 # %"  output double quotes, surrounding the variable which is encoded to be in there.
 # %s  output encoded to be in double quotes, but don't output the quotes
 # %$  output argument as-is, no encoding. Make sure you quote everything from the user!
@@ -133,6 +134,16 @@ function _db_printf($str, $args) {
                        $int = format_int(array_shift($args));
                        if($int == '') $int = '0';
                        $out .= $int;
+               } elseif($chr == 'f') {
+                       $arg = array_shift($args);
+                       if(is_numeric($arg)) {
+                               $arg = sprintf("%f", $arg);
+                       }
+                       $arg = format_decimal($arg);
+                       if(strlen($arg) < 1) {
+                               $arg = '0.0';
+                       }
+                       $out .= $arg;
                } elseif($chr == '$') {
                        $out .= array_shift($args);
                } else {