summaryrefslogtreecommitdiff
path: root/includes/mysql_provider.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/mysql_provider.php')
-rw-r--r--includes/mysql_provider.php176
1 files changed, 176 insertions, 0 deletions
diff --git a/includes/mysql_provider.php b/includes/mysql_provider.php
new file mode 100644
index 00000000..d9e78fb4
--- /dev/null
+++ b/includes/mysql_provider.php
@@ -0,0 +1,176 @@
+<?php
+
+/**
+ * Close connection.
+ */
+function sql_close() {
+ global $sql_connection;
+
+ return $sql_connection->close();
+}
+
+/**
+ * Start new transaction.
+ */
+function sql_transaction_start() {
+ global $sql_nested_transaction_level;
+
+ if($sql_nested_transaction_level++ == 0)
+ return sql_query("BEGIN");
+ else
+ return true;
+}
+
+/**
+ * Commit transaction.
+ */
+function sql_transaction_commit() {
+ global $sql_nested_transaction_level;
+
+ if(--$sql_nested_transaction_level == 0)
+ return sql_query("COMMIT");
+ else
+ return true;
+}
+
+/**
+ * Stop transaction, revert database.
+ */
+function sql_transaction_rollback() {
+ global $sql_nested_transaction_level;
+
+ if(--$sql_nested_transaction_level == 0)
+ return sql_query("ROLLBACK");
+ else
+ return true;
+}
+
+/**
+ * Logs an sql error.
+ * @param string $message
+ * @return false
+ */
+function sql_error($message) {
+ sql_close();
+
+ $message = trim($message) . "\n";
+ $message .= debug_string_backtrace() . "\n";
+
+ error_log('mysql_provider error: ' . $message);
+
+ return false;
+}
+
+/**
+ * Connect to mysql server.
+ * @param string $host Host
+ * @param string $user Username
+ * @param string $pass Password
+ * @param string $db DB to select
+ * @return mysqli The connection handler
+ */
+function sql_connect($host, $user, $pass, $db) {
+ global $sql_connection;
+
+ $sql_connection = new mysqli($host, $user, $pass, $db);
+ if ($sql_connection->connect_errno)
+ return sql_error("Unable to connect to MySQL: " . $sql_connection->connect_error);
+
+ $result = $sql_connection->query("SET CHARACTER SET utf8;");
+ if (! $result)
+ return sql_error("Unable to set utf8 character set (" . $sql_connection->errno . ") " . $sql_connection->error);
+
+ $result = $sql_connection->set_charset('utf8');
+ if (! $result)
+ return sql_error("Unable to set utf8 names (" . $sql_connection->errno . ") " . $sql_connection->error);
+
+ return $sql_connection;
+}
+
+/**
+ * Change the selected db in current mysql-connection.
+ * @param $db_name
+ * @return bool true on success, false on error
+ */
+function sql_select_db($db_name) {
+ global $sql_connection;
+ if (!$sql_connection->select_db($db_name))
+ return sql_error("No database selected.");
+ return true;
+}
+
+/**
+ * MySQL SELECT query
+ * @param string $query
+ * @return Result array or false on error
+ */
+function sql_select($query) {
+ global $sql_connection;
+
+ $result = $sql_connection->query($query);
+ if ($result) {
+ $data = array();
+ while ($line = $result->fetch_assoc())
+ array_push($data, $line);
+ return $data;
+ } else
+ return sql_error("MySQL-query error: " . $query . " (" . $sql_connection->errno . ") " . $sql_connection->error);
+}
+
+/**
+ * MySQL execute a query
+ * @param string $query
+ * @return mysqli_result|boolean Result resource or false on error
+ */
+function sql_query($query) {
+ global $sql_connection;
+
+ $result = $sql_connection->query($query);
+ if ($result) {
+ return $result;
+ } else
+ usr_error("MySQL-query error: " . $query . " (" . $sql_connection->errno . ") " . $sql_connection->error);
+}
+
+/**
+ * Returns last inserted id.
+ *
+ * @return int
+ */
+function sql_id() {
+ global $sql_connection;
+ return $sql_connection->insert_id;
+}
+
+/**
+ * Escape a string for a sql query.
+ *
+ * @param string $query
+ * @return string
+ */
+function sql_escape($query) {
+ global $sql_connection;
+ return $sql_connection->real_escape_string($query);
+}
+
+/**
+ * Count query result lines.
+ *
+ * @param string $query
+ * @return int Count of result lines
+ */
+function sql_num_query($query) {
+ global $sql_connection;
+ return sql_query($query)->num_rows;
+}
+
+function sql_select_single_col($query) {
+ $result = sql_select($query);
+ return array_map('array_shift', $result);
+}
+
+function sql_select_single_cell($query) {
+ return array_shift(array_shift(sql_select($query)));
+}
+
+?>