+++ /dev/null
-<?php\r
-\r
-/*\r
- * Nucleus: PHP/MySQL Weblog CMS (http://nucleuscms.org/)\r
- * Copyright (C) 2002-2012 The Nucleus Group\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- * (see nucleus/documentation/index.html#license for more info)\r
- */\r
-/**\r
- * @license http://nucleuscms.org/license.txt GNU General Public License\r
- * @copyright Copyright (C) 2002-2012 The Nucleus Group\r
- * @version $Id: mysql.php 1750 2012-04-13 14:41:10Z sakamocchi $\r
- */\r
-/*\r
- * complete sql_* wrappers for mysql functions\r
- *\r
- * functions moved from globalfunctions.php: sql_connect, sql_disconnect, sql_query\r
- */\r
-\r
-$MYSQL_CONN = 0;\r
-\r
-if ( function_exists('mysql_query') && !function_exists('sql_fetch_assoc') )\r
-{\r
- /**\r
- * Errors before the database connection has been made\r
- */\r
- function startUpError($msg, $title)\r
- {\r
- echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";\r
- echo '<head><title>' . Entity::hsc($title) . "</title></head>\n";\r
- echo "<body>\n";\r
- echo '<h1>' . Entity::hsc($title) . "</h1>\n";\r
- echo "<p>{$msg}</p>\n";\r
- echo "</body>\n";\r
- echo "</html>\n";\r
- exit;\r
- }\r
- \r
- /**\r
- * Connects to mysql server with arguments\r
- */\r
- function sql_connect_args($mysql_host = 'localhost', $mysql_user = '', $mysql_password = '', $mysql_database = '', $new_link = FALSE)\r
- {\r
- $CONN = @mysql_connect($mysql_host, $mysql_user, $mysql_password, $new_link);\r
- \r
- if ( $mysql_database )\r
- {\r
- mysql_select_db($mysql_database,$CONN);\r
- sql_set_charset('utf8');\r
- }\r
- \r
- /*\r
- // For debugging\r
- $result = sql_query('SHOW VARIABLES LIKE \'char%\';');\r
- while(FALSE !== ($row = sql_fetch_row($result)))\r
- {\r
- echo "{$row[0]}: {$row[1]}\n";\r
- }\r
- */\r
- \r
- return $CONN;\r
- }\r
- \r
- /**\r
- * Connects to mysql server\r
- */\r
- function sql_connect()\r
- {\r
- global $MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD, $MYSQL_DATABASE, $MYSQL_CONN;\r
- \r
- $MYSQL_CONN = @mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASSWORD) or startUpError('<p>Could not connect to MySQL database.</p>', 'Connect Error');\r
- mysql_select_db($MYSQL_DATABASE) or startUpError('<p>Could not select database: ' . mysql_error() . '</p>', 'Connect Error');\r
- \r
- sql_set_charset('utf8');\r
- \r
- /*\r
- // For debugging\r
- $result = sql_query('SHOW VARIABLES LIKE \'char%\';');\r
- while(FALSE !== ($row = sql_fetch_row($result)))\r
- {\r
- echo "{$row[0]}: {$row[1]}\n";\r
- }\r
- */\r
- \r
- return $MYSQL_CONN;\r
- }\r
- \r
- /**\r
- * disconnects from SQL server\r
- */\r
- function sql_disconnect($conn = false)\r
- {\r
- global $MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- @mysql_close($conn);\r
- }\r
- \r
- /**\r
- * sql_close()\r
- * use sql_disconnect() instead of this\r
- * \r
- * @deprecated\r
- * @param resource $conn resource of mySQL connection\r
- * @return void\r
- */\r
- function sql_close($conn = false)\r
- {\r
- global $MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- @mysql_close($conn);\r
- return;
- }\r
- \r
- /**\r
- * executes an SQL query\r
- */\r
- function sql_query($query,$conn = false)\r
- {\r
- global $SQLCount,$MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- $SQLCount++;\r
- $res = mysql_query($query,$conn) or print("mySQL error with query $query: " . mysql_error($conn) . '<p />');\r
- return $res;\r
- }\r
- \r
- /**\r
- * executes an SQL error\r
- */\r
- function sql_error($conn = false)\r
- {\r
- global $MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- return mysql_error($conn);\r
- }\r
- \r
- /**\r
- * executes an SQL db select\r
- */\r
- function sql_select_db($db,$conn = false)\r
- {\r
- global $MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- return mysql_select_db($db,$conn);\r
- }\r
- \r
- /**\r
- * executes an SQL real escape\r
- */\r
- function sql_real_escape_string($val, $conn = false)\r
- {\r
- global $MYSQL_CONN;\r
- if (!$conn)\r
- {\r
- $conn =& $MYSQL_CONN;\r
- }\r
- return mysql_real_escape_string($val, $conn);\r
- }\r
- \r
- /**\r
- * executes an PDO::quote() like escape, ie adds quotes arround the string and escapes chars as needed\r
- */\r
- function sql_quote_string($val, $conn = false)\r
- {\r
- global $MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- return "'".mysql_real_escape_string($val,$conn)."'";\r
- }\r
- \r
- /**\r
- * executes an SQL insert id\r
- */\r
- function sql_insert_id($conn = false)\r
- {\r
- global $MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- return mysql_insert_id($conn);\r
- }\r
- \r
- /**\r
- * executes an SQL result request\r
- */\r
- function sql_result($res, $row, $col)\r
- {\r
- return mysql_result($res,$row,$col);\r
- }\r
- \r
- /**\r
- * frees sql result resources\r
- */\r
- function sql_free_result($res)\r
- {\r
- return mysql_free_result($res);\r
- }\r
- \r
- /**\r
- * returns number of rows in SQL result\r
- */\r
- function sql_num_rows($res)\r
- {\r
- return mysql_num_rows($res);\r
- }\r
- \r
- /**\r
- * returns number of rows affected by SQL query\r
- */\r
- function sql_affected_rows($conn = false)\r
- {\r
- global $MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- return mysql_affected_rows($conn);\r
- }\r
- \r
- /**\r
- * Get number of fields in result\r
- */\r
- function sql_num_fields($res)\r
- {\r
- return mysql_num_fields($res);\r
- }\r
- \r
- /**\r
- * fetches next row of SQL result as an associative array\r
- */\r
- function sql_fetch_assoc($res)\r
- {\r
- return mysql_fetch_assoc($res);\r
- }\r
- \r
- /**\r
- * Fetch a result row as an associative array, a numeric array, or both\r
- */\r
- function sql_fetch_array($res)\r
- {\r
- return mysql_fetch_array($res);\r
- }\r
- \r
- /**\r
- * fetches next row of SQL result as an object\r
- */\r
- function sql_fetch_object($res)\r
- {\r
- return mysql_fetch_object($res);\r
- }\r
- \r
- /**\r
- * Get a result row as an enumerated array\r
- */\r
- function sql_fetch_row($res)\r
- {\r
- return mysql_fetch_row($res);\r
- }\r
- \r
- /**\r
- * Get column information from a result and return as an object\r
- */\r
- function sql_fetch_field($res,$offset = 0)\r
- {\r
- return mysql_fetch_field($res,$offset);\r
- }\r
- \r
- /**\r
- * Get current system status (returns string)\r
- */\r
- function sql_stat($conn=false)\r
- {\r
- global $MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- return mysql_stat($conn);\r
- }\r
- \r
- /**\r
- * Returns the name of the character set\r
- */\r
- function sql_client_encoding($conn=false)\r
- {\r
- global $MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- return mysql_client_encoding($conn);\r
- }\r
- \r
- /**\r
- * Get SQL client version\r
- */\r
- function sql_get_client_info()\r
- {\r
- return mysql_get_client_info();\r
- }\r
- \r
- /**\r
- * Get SQL server version\r
- */\r
- function sql_get_server_info($conn=false)\r
- {\r
- global $MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- return mysql_get_server_info($conn);\r
- }\r
- \r
- /**\r
- * Returns a string describing the type of SQL connection in use for the connection or FALSE on failure\r
- */\r
- function sql_get_host_info($conn=false)\r
- {\r
- global $MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- return mysql_get_host_info($conn);\r
- }\r
- \r
- /**\r
- * Returns the SQL protocol on success, or FALSE on failure.\r
- */\r
- function sql_get_proto_info($conn=false)\r
- {\r
- global $MYSQL_CONN;\r
- if ( !$conn )\r
- {\r
- $conn = $MYSQL_CONN;\r
- }\r
- return mysql_get_proto_info($conn);\r
- }\r
- \r
- /**\r
- * Get the name of the specified field in a result\r
- */\r
- function sql_field_name($res, $offset = 0)\r
- {\r
- return mysql_field_name($res, $offset);\r
- }\r
- \r
- /**\r
- * Set character encodings in each fields related to MySQL connection.\r
- */\r
- function sql_set_charset($charset)\r
- {\r
- global $MYSQL_CONN;\r
- \r
- /*\r
- * NOTE:\r
- *\r
- * We decided to ignore which character encodings is set in each text field of MySQL table!\r
- *\r
- * There are differences between "SET NAMES xxx;" and "SET CHARACTER SET xxx;"\r
- * according MySQL version.\r
- * http://dev.mysql.com/doc/refman/4.1/en/charset-connection.html\r
- * http://dev.mysql.com/doc/refman/5.1/en/charset-connection.html\r
- *\r
- * And mysql_set_charset() execute "SET NAMES xxx;" internally and set mysql->charset as xxx.\r
- * refering to MySQL C API.\r
- * http://dev.mysql.com/doc/refman/5.1/ja/mysql-set-character-set.html\r
- * http://php.net/manual/en/function.mysql-set-charset.php\r
- *\r
- * mysql_real_escape_string() is affected by mysql->charset,\r
- * refering to MySQL C API.\r
- * http://dev.mysql.com/doc/refman/5.1/en/mysql-real-escape-string.html\r
- * http://php.net/manual/en/function.mysql-real-escape-string.php\r
- *\r
- * But using the same character encoding in character_set_client and the strings is\r
- * more important than mysql->charset\r
- * because mysql_real_escape_string() escape some characters in ASCII character set.\r
- *\r
- */\r
- $charset = strtolower($charset);\r
- $mysql_version = preg_replace('#^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})(.*)$#', '$1.$2.$3', sql_get_server_info($MYSQL_CONN));\r
- \r
- if ( version_compare($mysql_version, '5.0.7', '>=') && function_exists('mysql_set_charset') )\r
- {\r
- $result = mysql_set_charset($charset);\r
- }\r
- else if ( version_compare($mysql_version, '5.0.7', '<') )\r
- {\r
- $result = sql_query("SET CHARACTER SET {$charset};");\r
- }\r
- else\r
- {\r
- $result = sql_query("SET NAMES {$charset};");\r
- }\r
- \r
- return $result;\r
- }\r
-\r
-/**************************************************************************\r
-Unimplemented mysql_* functions\r
-\r
-# mysql_ data_ seek (maybe useful)\r
-# mysql_ errno (maybe useful)\r
-# mysql_ fetch_ lengths (maybe useful)\r
-# mysql_ field_ flags (maybe useful)\r
-# mysql_ field_ len (maybe useful)\r
-# mysql_ field_ seek (maybe useful)\r
-# mysql_ field_ table (maybe useful)\r
-# mysql_ field_ type (maybe useful)\r
-# mysql_ info (maybe useful)\r
-# mysql_ list_ processes (maybe useful)\r
-# mysql_ ping (maybe useful)\r
-# mysql_ set_ charset (maybe useful, requires php >=5.2.3 and mysql >=5.0.7)\r
-# mysql_ thread_ id (maybe useful)\r
-\r
-# mysql_ db_ name (useful only if working on multiple dbs which we do not do)\r
-# mysql_ list_ dbs (useful only if working on multiple dbs which we do not do)\r
-\r
-# mysql_ pconnect (probably not useful and could cause some unintended performance issues)\r
-# mysql_ unbuffered_ query (possibly useful, but complicated and not supported by all database drivers (pdo))\r
-\r
-# mysql_ change_ user (deprecated)\r
-# mysql_ create_ db (deprecated)\r
-# mysql_ db_ query (deprecated)\r
-# mysql_ drop_ db (deprecated)\r
-# mysql_ escape_ string (deprecated)\r
-# mysql_ list_ fields (deprecated)\r
-# mysql_ list_ tables (deprecated)\r
-# mysql_ tablename (deprecated)\r
-\r
-*******************************************************************/\r
-}\r