php mysql db connection class
<?php class DB { const db_name='dbname'; const username='dbuser'; const password='dbpass'; const hostname='localhost'; private static $connection=null; public static function connect() { $connection = mysql_connect(self::hostname, self::username, self::password); $connection or self::ethrow("unable to connect to db"); $result = mysql_select_db (self::db_name, $connection); $result or self::ethrow("unable to select db"); mysql_query("SET NAMES 'utf8'", $connection); self::$connection = &$connection; } private static function ethrow($msg) { throw new Exception($msg); } private static function escape($str) { return is_null($str) ? 'NULL' : "'".mysql_real_escape_string($str,self::$connection)."'"; } private static function query() { self::$connection or self::connect(); $args = func_get_args(); !empty($args) or self::ethrow("invalid call to sql"); $query = array_shift($args); $query = str_replace("?S?", "%s", $query);//use of alternate syntax discourages people from trying %d, which wont work $args = array_map(array('self','escape'), $args); array_unshift($args, $query); $string = call_user_func_array('sprintf',$args); $result = mysql_query($string, self::$connection); $result or self::ethrow("an error has occurred:".mysql_error(self::$connection)); return $result; } public static function sql_exec() { $args = func_get_args(); $result = call_user_func_array(array('self','query'), $args); $query = trim($args[0]); if (preg_match('/^(update|delete)/i', $query)) { return mysql_affected_rows(self::$connection); } else if (preg_match('/^(insert)/i', $query)) { return mysql_insert_id(self::$connection); } return 0; } public static function sql_rows() { $rows = array(); $args = func_get_args(); $result = call_user_func_array(array('self','query'), $args); while ($row = mysql_fetch_assoc($result)) { $rows[] = $row; } mysql_free_result($result); return $rows; } public static function sql_row() { $args = func_get_args(); $result = call_user_func_array(array('self','query'), $args); $row = mysql_fetch_assoc($result); mysql_free_result($result); return !empty($row) ? $row : array(); } } function sql_all() { $args = func_get_args(); return call_user_func_array(array('DB','sql_all'), $args); } function sql_row() { $args = func_get_args(); return call_user_func_array(array('DB','sql_row'), $args); } function sql_exec() { $args = func_get_args(); return call_user_func_array(array('DB','sql_exec'), $args); } ?>
code snippets are licensed under Creative Commons CC-By-SA 3.0 (unless otherwise specified)