使用方法:
$database = new database_mysqli("localhost", "username", "password", "databasename"); //show full results - single query $sql = "SHOW TABLES"; $tables = $database->query($sql); //execute multiple queries $sql = array ("SELECT * FROM blogs WHERE userId = 2", "SELECT * FROM comments WHERE userId = 2"); $results = $database->query($sql, "", true, true); //execute query, dont care about results $sql = "DELETE FROM blogs WHERE userID = 2"; $database->justquery($sql); //show first row only $sql = "SHOW TABLES"; $firstTable = $database->loadFirstRow($sql); //show first element of first row only (useful for SELECT COUNT(*) statements) $sql = "SELECT COUNT(*) FROM users AS U"; $total = $database->loadResult($sql); $database->destroyConnection();
php代码:
<?php /** * This is the MySQLi OOP database interface class * @package Skyward_Landing_Page * @subpackage Database Interface * @filesource * @author Matt Ford * @version 2.0 */ class database_mysqli { /** * database server hostname/IP * @var string */ private $host = NULL; /** * SQL Server login username, encrypted for privacy * @var string */ private $username = NULL; /** * SQL Server login password, encrypted for privacy * @var string */ private $password = NULL; /** * name of database * @var string */ public $databaseName = NULL; /** * SQL Server connection resource * @var object */ public $link = NULL; /** * array of queries run against this object * @var array */ public $queries = NULL; /** * any errors resulting from queries * @var array */ public $errors = NULL; public function __construct($host, $username, $password, $database) { $this->host = $host; $this->username = sha1($username); $this->password = sha1($password); $this->databaseName = $database; $this->link = ""; $this->queries = array (); $this->errors = array (); $this->sqls = array (); $this->link = @new mysqli($this->host, $username, $password); if ($this->link->connect_error != null) { die("Connect Error: " . $this->link->connect_error); } else { if ($this->link->select_db($this->databaseName) === false) { die("Cannot Select Table: " . $this->link->error); } else {} } } /** * This method kills the MySQLi connection * @access public * @author Matt Ford */ public function destroyConnection() { $this->link->kill($this->link->thread_id); $this->link->close(); } /** * This method executes a query and returns the raw result resource * @access public * @author Matt Ford * @param string $sql string query * @return object raw SQL result resource */ public function justquery($sql) { $this->queries[] = $sql; return $this->link->query($sql); } /** * This method loads the first value of the first column of the first row of results * @access public * @author Matt Ford * @param string $sql string query * @return string result from first column of first row of query results */ public function loadResult($sql) { if (!($cur = $this->justquery($sql))) { return null; } $ret = null; if ($row = $cur->fetch_row()) { $ret = $row[0]; } $cur->free(); return $ret; } /** * This method returns the first row of results * @access public * @author Matt Ford * @param string $sql string query * @return object first row of results */ public function loadFirstRow($sql) { if (!($cur = $this->justquery($sql))) { return null; } $ret = null; if ($row = $cur->fetch_object()) { $ret = $row; } $cur->free(); return $ret; } /** * This method returns the auto-increment value from the last query run * @access public * @author Matt Ford * @return int auto-incremeted (primary key) value of last query */ public function insertid() { return $this->link->insert_id; } /** * This method returns the number of affected rows in the last insert/update/replace/delete query * @access public * @author Matt Ford * @return int number of affected rows */ public function numAffectedRows() { return $this->link->affected_rows; } /** * This method queries the database, logs data, and returns results * @access public * @author Matt Ford * @param string|array $sql depending on $batch flag, could be a single string query or an array of queries to run * @param string $key if supplied, each group of results will be indexed with its respective $key's column value as its object index/position * @param bool $returns determins if any results will be returned or not, merely for I/O * @param bool $batch flag denoting whether $sql is a string query or an array of queries to loop over * @return unset|object depending on $returns, could be nothing, or an object of query results */ public function query($sql, $key = "", $returns = true, $batch = false) { $sqls = $result = array (); switch ($batch) { default: case true: foreach ($sql as $index => $query) { $this->queries[] = $query; $answer = $this->link->query($query); if (!$answer) { $this->errors[] = $this->link->error; } else { if ($returns != false) { if ($answer->num_rows > 0){ while ($row = $answer->fetch_object()) { if ($key != ""){ $result[$index][$row->$key] = $row; } else { $result[$index][] = $row; } } $answer->free(); } else {} } else {} } } break; case false: $this->queries[] = $sql; $answer = $this->link->query($sql); if (!$answer) { $this->errors[] = $this->link->error; $result = false; } else { if ($returns != false) { if ($answer->num_rows > 0){ while ($row = $answer->fetch_object()) { if ($key != ""){ $result[$row->$key] = $row; } else { $result[] = $row; } } $answer->free(); } else {} } else { $result = true; } } break; } return $result; } /** * This method simply uses the database library's string escape utility * @access public * @author Matt Ford * @param string $string string needing escaping * @return string escaped string */ public function escapeString($string) { return $this->link->real_escape_string($string); } /** * This method builds INSERT/UPDATE queries to allow easy query generation/maintenance for long queries. * @access public * @author Matt Ford * @param array $params key/value pair array of parameters for query * @return string resulting Query string for MySQLi */ public function buildSQL($params) { /* Usage #INSERT Statements $params = array ( "type" => "insert", "table" => "eventCal_events", "doNotQuote" => array(), "data" => array ( "eventName" => $data->request["eventName"], "eventText" => $data->request["eventText"], "eventLocation" => $data->request["eventLocation"], "eventStartDate_month" => $start["month"], "eventStartDate_day" => $start["day"], "eventStartDate_year" => $start["year"], "eventStartDate_time" => $start["time"], "eventStartDate_timestamp" => $timestampStart, "eventEndDate_month" => $end["month"], "eventEndDate_day" => $end["day"], "eventEndDate_year" => $end["year"], "eventEndDate_time" => $end["time"], "eventEndDate_timestamp" => $timestampEnd, "occursMonthly" => $occursMonthly, "occursYearly" => $occursYearly, "dynamicEvent" => $dynamicEvent, "dynNthDay" => $data->request["dynOccurrence_freq"], "dynDayName" => $data->request["dynOccurrence_day"], "dynMonth" => $data->request["dynOccurrence_month"] ) ); $sql = $database->buildSQL($params); #UPDATE Statements $params = array ( "type" => "update", "table" => "eventCal_events", "doNotQuote" => array(), "data" => array ( "eventName" => $data->request["eventName"], "eventText" => $data->request["eventText"], "eventLocation" => $data->request["eventLocation"], "eventStartDate_month" => $start["month"], "eventStartDate_day" => $start["day"], "eventStartDate_year" => $start["year"], "eventStartDate_time" => $start["time"], "eventStartDate_timestamp" => $timestampStart, "eventEndDate_month" => $end["month"], "eventEndDate_day" => $end["day"], "eventEndDate_year" => $end["year"], "eventEndDate_time" => $end["time"], "eventEndDate_timestamp" => $timestampEnd, "occursMonthly" => $occursMonthly, "occursYearly" => $occursYearly, "dynamicEvent" => $dynamicEvent, "dynNthDay" => $data->request["dynOccurrence_freq"], "dynDayName" => $data->request["dynOccurrence_day"], "dynMonth" => $data->request["dynOccurrence_month"] ), "where" => array ( "eventID" => $data->request["eventID"], "eventCreator" => $my->userID ) ); $sql = $database->buildSQL($params); */ $sql = ""; $fieldQuantifier = "`"; $valueQuantifier = '"'; $params["type"] = strtolower($params["type"]); $params["doNotQuote"] = (is_array($params["doNotQuote"]) === true) ? $params["doNotQuote"] : array(); foreach ($params["data"] as $k => $v) { $value = stripslashes($v); $params["data"][$k] = $this->escapeString($value); } switch ($params["type"]) { case "insert": $sql .= "INSERT INTO " . $fieldQuantifier . $params["table"] . $fieldQuantifier . " "; $sql .= "(" . $fieldQuantifier . implode($fieldQuantifier . ", " . $fieldQuantifier, array_keys($params["data"])) . $fieldQuantifier . ") "; $sql .= "VALUES("; $vars = array(); foreach ($params["data"] as $k => $v) { $v = (in_array($k, $params["doNotQuote"])) ? $v : $valueQuantifier . $v . $valueQuantifier; $vars[] = $v; } $sql .= implode(", ", $vars); $sql .= ");"; break; case "update": $sql .= "UPDATE " . $fieldQuantifier . $params["table"] . $fieldQuantifier . " SET "; $vars = array(); foreach ($params["data"] as $k => $v) { $v = (in_array($k, $params["doNotQuote"])) ? $v : $valueQuantifier . $v . $valueQuantifier; $vars[] = $fieldQuantifier . $k . $fieldQuantifier . " = " . $v; } $sql .= implode(", ", $vars); $vars = array(); if ($params["where"]) { $sql .= " WHERE "; foreach ($params["where"] as $k => $v) { $vars[] = $fieldQuantifier . $k . $fieldQuantifier . " = " . $valueQuantifier . $v . $valueQuantifier; } $sql .= implode(" AND ", $vars); } else {} $sql .= ";"; break; } return $sql; } } ?>

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung