X-Git-Url: https://jasonwoof.com/gitweb/?p=wfpl.git;a=blobdiff_plain;f=db.php;h=c137d03a3cd63a92770a457322f961e4f277c354;hp=1bf78fd6c868093b2ebc25d610dea0be4c7354fb;hb=062d46e16429f2e55573567518cb01c83b319ac4;hpb=a781daf79ad6d3a3dfec09ac61e8dcc4c8cc1c48 diff --git a/db.php b/db.php index 1bf78fd..c137d03 100644 --- a/db.php +++ b/db.php @@ -16,8 +16,8 @@ # along with this program. If not, see . -require_once('code/wfpl/encode.php'); -require_once('code/wfpl/format.php'); +require_once(__DIR__.'/'.'encode.php'); +require_once(__DIR__.'/'.'format.php'); # db_connect() -- connect to a mysql database # @@ -38,7 +38,11 @@ require_once('code/wfpl/format.php'); # the database connection handle. You'll only need this if you want to have # multiple databases open at once. -function db_connect($database = 'auto', $user = 'auto', $pass = 'auto', $host = 'localhost') { +function db_enc_sql($str) { + return mysqli_real_escape_string(isset($GLOBALS['wfpl_db_handle']) ? $GLOBALS['wfpl_db_handle'] : null, $str); +} + +function db_connect($database = 'auto', $user = 'auto', $pass = 'auto', $host = 'localhost', $encoding = 'utf8') { if($database == 'auto') { if(isset($GLOBALS['db_name'])) { $database = $GLOBALS['db_name']; @@ -67,13 +71,15 @@ 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()); } - if(!mysql_select_db($database, $GLOBALS['wfpl_db_handle'])) { - die("Couldn not access database \"$database\": " . mysql_error($GLOBALS['wfpl_db_handle'])); + mysqli_set_charset($GLOBALS['wfpl_db_handle'], $encoding); + + 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']; @@ -82,9 +88,9 @@ function db_connect($database = 'auto', $user = 'auto', $pass = 'auto', $host = # Unless you're doing something unusual like an ALTER TABLE don't call this directly function db_send_query($sql) { #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; @@ -127,9 +133,9 @@ function _db_printf($str, $args) { $str = substr($str, $pos + 2); if($chr == '"') { - $out .= '"' . enc_sql(array_shift($args)) . '"'; + $out .= '"' . db_enc_sql(array_shift($args)) . '"'; } elseif($chr == 's') { - $out .= enc_sql(array_shift($args)); + $out .= db_enc_sql(array_shift($args)); } elseif($chr == 'i') { $int = format_int(array_shift($args)); if($int == '') $int = '0'; @@ -155,6 +161,7 @@ function _db_printf($str, $args) { } +# helper function function db_send_get($table, $columns, $where, $args) { $sql = "SELECT $columns FROM $table"; if($where) { @@ -165,96 +172,104 @@ function db_send_get($table, $columns, $where, $args) { } +# if no results: returs [] function db_get_rows($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_row($result)) { + while($row = mysqli_fetch_row($result)) { $rows[] = $row; } - mysql_free_result($result); + mysqli_free_result($result); return $rows; } # like db_get_rows, but return array of hashes. +# if no results: returs [] 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)) { + while($row = mysqli_fetch_assoc($result)) { $rows[] = $row; } - mysql_free_result($result); + mysqli_free_result($result); return $rows; } +# if no results: returs [] function db_get_column($table, $columns, $where = '') { $args = func_get_args(); $args = array_slice($args, 3); $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; } +# returns first matching row +# if no results: returns false function db_get_row($table, $columns, $where = '') { $args = func_get_args(); $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; } # like db_get_row, but return a hash. +# if no results: returns false 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); + $row = mysqli_fetch_assoc($result); - mysql_free_result($result); + mysqli_free_result($result); return $row; } -function db_get_value($table, $columns, $where = '') { +# if no results: returns false +function db_get_value($table, $column, $where = '') { $args = func_get_args(); $args = array_slice($args, 3); - $result = db_send_get($table, $columns, $where, $args); + $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: @@ -298,7 +313,7 @@ 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']); + return mysqli_insert_id($GLOBALS['wfpl_db_handle']); } @@ -308,7 +323,7 @@ function db_insert_ish($command, $table, $columns, $values) { $sql = ''; foreach($values as $value) { if($sql) $sql .= ','; - $sql .= '"' . enc_sql($value) . '"'; + $sql .= '"' . db_enc_sql($value) . '"'; } $sql = "$command INTO $table ($columns) values($sql)"; @@ -358,7 +373,7 @@ function db_update($table, $columns, $values) { if($sql != '') { $sql .= ', '; } - $sql .= $columns[$i] . ' = "' . enc_sql($values[$i]) . '"'; + $sql .= $columns[$i] . ' = "' . db_enc_sql($values[$i]) . '"'; }