X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=db.php;h=229fe10b9d631ba18e59a5c66aa0b9377d735fd5;hb=1cc2fd791d55bca1a63afbeb2628dd1a8bd2ba3f;hp=95402205973cb9d6878288313e14ba605a3c8486;hpb=b5400a0c7808da6bae095ff54f6d45591c74948f;p=wfpl.git diff --git a/db.php b/db.php index 9540220..229fe10 100644 --- a/db.php +++ b/db.php @@ -1,25 +1,16 @@ . +# This program is in the public domain within the United States. Additionally, +# we waive copyright and related rights in the work worldwide through the CC0 +# 1.0 Universal public domain dedication, which can be found at +# http://creativecommons.org/publicdomain/zero/1.0/ require_once(__DIR__.'/'.'encode.php'); require_once(__DIR__.'/'.'format.php'); -# db_connect() -- connect to a mysql database +# db_connect() -- connect to a mysql database (automatically, later, when/if needed) +# db_connect_now() -- connect to a mysql database immediately # # PARAMETERS: # @@ -37,12 +28,14 @@ require_once(__DIR__.'/'.'format.php'); # # the database connection handle. You'll only need this if you want to have # multiple databases open at once. - -function db_enc_sql($str) { - return mysql_real_escape_string($str, $GLOBALS['wfpl_db_handle'] ? $GLOBALS['wfpl_db_handle'] : null); +function db_connect() { + if (isset($GLOBALS['wfpl_db_handle'])) { + mysqli_close($GLOBALS['wfpl_db_handle']); + unset($GLOBALS['wfpl_db_handle']); + } + $GLOBALS['wfpl_db_connect_args'] = func_get_args(); } - -function db_connect($database = 'auto', $user = 'auto', $pass = 'auto', $host = 'localhost', $encoding = 'utf8') { +function db_connect_now($database = 'auto', $user = 'auto', $pass = 'auto', $host = 'localhost', $encoding = 'utf8') { if($database == 'auto') { if(isset($GLOBALS['db_name'])) { $database = $GLOBALS['db_name']; @@ -71,26 +64,42 @@ function db_connect($database = 'auto', $user = 'auto', $pass = 'auto', $host = } } - $GLOBALS['wfpl_db_handle'] = mysql_connect($host, $user, $pass); + $GLOBALS['wfpl_db_handle'] = mysqli_connect($host, $user, $pass); if(!$GLOBALS['wfpl_db_handle']) { - die('Could not connect to the database: ' . mysql_error()); + die('Could not connect to the database: ' . mysqli_error()); } - mysql_set_charset($encoding, $GLOBALS['wfpl_db_handle']); + mysqli_set_charset($GLOBALS['wfpl_db_handle'], $encoding); - if(!mysql_select_db($database, $GLOBALS['wfpl_db_handle'])) { - die("Couldn not access database \"$database\": " . mysql_error($GLOBALS['wfpl_db_handle'])); + if(!mysqli_select_db($GLOBALS['wfpl_db_handle'], $database)) { + die("Couldn not access database \"$database\": " . mysqli_error($GLOBALS['wfpl_db_handle'])); } return $GLOBALS['wfpl_db_handle']; } +# for internal use (helps implement the auto-connect feature of db_connect()) +function _db_connection_needed() { + if (isset($GLOBALS['wfpl_db_handle'])) { + return; + } + if (isset($GLOBALS['wfpl_db_connect_args'])) { + return call_user_func_array(db_connect_now, $GLOBALS['wfpl_db_connect_args']); + } + die('Error: you must call db_connect() or db_auto_connect() first!'); +} + +function db_enc_sql($str) { + _db_connection_needed(); + return mysqli_real_escape_string(isset($GLOBALS['wfpl_db_handle']) ? $GLOBALS['wfpl_db_handle'] : null, $str); +} # Unless you're doing something unusual like an ALTER TABLE don't call this directly function db_send_query($sql) { + _db_connection_needed(); #echo("Sending query: " . enc_html($sql) . "
\n"); - $result = mysql_query($sql, $GLOBALS['wfpl_db_handle']); + $result = mysqli_query($GLOBALS['wfpl_db_handle'], $sql); if(!$result) { - die(enc_html('DATABASE ERROR: ' . mysql_error($GLOBALS['wfpl_db_handle']) . ' in the following query: ' . $sql)); + die(enc_html('DATABASE ERROR: ' . mysqli_error($GLOBALS['wfpl_db_handle']) . ' in the following query: ' . $sql)); } return $result; @@ -179,11 +188,11 @@ function db_get_rows($table, $columns, $where = '') { $result = db_send_get($table, $columns, $where, $args); $rows = array(); - while($row = mysql_fetch_row($result)) { + while($row = mysqli_fetch_row($result)) { $rows[] = $row; } - mysql_free_result($result); + mysqli_free_result($result); return $rows; } @@ -196,11 +205,11 @@ function db_get_assocs($table, $columns, $where = '') { $result = db_send_get($table, $columns, $where, $args); $rows = array(); - while($row = mysql_fetch_assoc($result)) { + while($row = mysqli_fetch_assoc($result)) { $rows[] = $row; } - mysql_free_result($result); + mysqli_free_result($result); return $rows; } @@ -212,11 +221,11 @@ function db_get_column($table, $columns, $where = '') { $result = db_send_get($table, $columns, $where, $args); $column = array(); - while($row = mysql_fetch_row($result)) { + while($row = mysqli_fetch_row($result)) { $column[] = $row[0]; } - mysql_free_result($result); + mysqli_free_result($result); return $column; } @@ -228,9 +237,9 @@ function db_get_row($table, $columns, $where = '') { $args = array_slice($args, 3); $result = db_send_get($table, $columns, $where, $args); - $row = mysql_fetch_row($result); + $row = mysqli_fetch_row($result); - mysql_free_result($result); + mysqli_free_result($result); return $row; } @@ -242,9 +251,9 @@ function db_get_assoc($table, $columns, $where = '') { $args = array_slice($args, 3); $result = db_send_get($table, $columns, $where, $args); - $row = mysql_fetch_assoc($result); + $row = mysqli_fetch_assoc($result); - mysql_free_result($result); + mysqli_free_result($result); return $row; } @@ -255,20 +264,21 @@ function db_get_value($table, $column, $where = '') { $args = array_slice($args, 3); $result = db_send_get($table, $column, $where, $args); - $value = mysql_fetch_row($result); + $value = mysqli_fetch_row($result); if($value !== false) { $value = $value[0]; } - mysql_free_result($result); + mysqli_free_result($result); return $value; } +# returns an integer function db_count($table, $where = '') { $args = func_get_args(); array_splice($args, 1, 0, array('count(*)')); - return call_user_func_array('db_get_value', $args); + return (int) call_user_func_array('db_get_value', $args); } # call either of these ways: @@ -312,7 +322,8 @@ function db_replace($table, $columns, $values) { # return the value mysql made up for the auto_increment field (for the last insert) function db_auto_id() { - return mysql_insert_id($GLOBALS['wfpl_db_handle']); + _db_connection_needed(); + return mysqli_insert_id($GLOBALS['wfpl_db_handle']); }