English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
No voy a perder tiempo en palabras, aquí está el código específico como se muestra a continuación:
<?php class mysql { private $db_host; //Anfitrión de la base de datos private $db_user; //Nombre de usuario de la base de datos private $db_pwd; //Nombre de usuario y contraseña de la base de datos private $db_database; //Nombre de la base de datos private $conn; //Identificador de conexión de base de datos; private $result; //Identificador de recursos del resultado de la orden query private $sql; //Sentencia de ejecución de sql private $row; //Número de entradas devueltas private $coding; //Codificación de base de datos, GBK, UTF8,gb2312 private $bulletin = true; //¿Activar el registro de errores? private $show_error = false; //Período de prueba, mostrar todos los errores, tiene seguridad de red, predeterminado cerrado private $is_error = false; //¿Detener inmediatamente al encontrar errores, predeterminado true, se recomienda no activar, porque cuando hay problemas los usuarios no pueden ver nada es muy molesto /*Constructor*/ public function __construct($db_host, $db_user, $db_pwd, $db_database, $conn, $coding) { $this->db_host = $db_host; $this->db_user = $db_user; $this->db_pwd = $db_pwd; $this->db_database = $db_database; $this->conn = $conn; $this->coding = $coding; $this->connect(); } /*Conexión de base de datos*/ public function connect() { if ($this->conn == "pconn") { //Enlace permanente $this->conn = mysql_pconnect($this->db_host, $this->db_user, $this->db_pwd); } else { //Incluso si la conexión $this->conn = mysql_connect($this->db_host, $this->db_user, $this->db_pwd); } if (!mysql_select_db($this->db_database, $this->conn)) { if ($this->show_error) { $this->show_error("La base de datos no está disponible: ", $this->db_database); } } mysql_query("SET NAMES $this->coding"); } /*Ejecutar statement en la base de datos, puede ejecutar cualquier statement de SQL como consultar, agregar, modificar, eliminar, etc.*/ public function query($sql) { if ($sql == "") { $this->show_error("Error de statement de SQL: ", "La statement de consulta de SQL está vacía"); } $this->sql = $sql; $result = mysql_query($this->sql, $this->conn); if (!$result) { //Usado en la depuración, se imprimirá automáticamente el statement de SQL cuando haya un error if ($this->show_error) { $this->show_error("Error de SQL: ", $this->sql); } } else { $this->result = $result; } return $this->result; } /*Crear una nueva base de datos*/ public function create_database($database_name) { $database = $database_name; $sqlDatabase = 'create database ' . $database; $this->query($sqlDatabase);}} } /*Consultar todas las bases de datos del servidor*/ //¿Separar la base de datos del sistema de la base de datos del usuario para una visualización más clara? public function show_databases() { $this->query("show databases"); echo "Bases de datos existentes: " . $amount = $this->db_num_rows($rs); />"; $i = 1; while ($row = $this->fetch_array($rs)) { echo "\$i $row[Database]"; />"; $i++; } } //Devolver todos los nombres de bases de datos del host en forma de array public function databases() { $rsPtr = mysql_list_dbs($this->conn); $i = 0; $cnt = mysql_num_rows($rsPtr); while ($i < $cnt) { $rs[] = mysql_db_name($rsPtr, $i); $i++; } return $rs; } /*Consultar todas las tablas en la base de datos*/ public function show_tables($database_name) { $this->query("show tables"); echo "Bases de datos existentes: " . $amount = $this->db_num_rows($rs); />"; $i = 1; while ($row = $this->fetch_array($rs)) { $columnName = "Tables_in_" . $database_name; echo "\$i $row[$columnName]"; />"; $i++; } } /* mysql_fetch_row() array $row[0], $row[1],$row[2\\ mysql_fetch_array() array $row[0] o $row[id] mysql_fetch_assoc() array usa $row->sensible a mayúsculas y minúsculas para el campo content mysql_fetch_object() objeto usa $row[id], $row[content] sensible a mayúsculas y minúsculas */ /*Obtener los datos de los resultados*/ public function mysql_result_li() { return mysql_result($str); } /*Obtener el conjunto de registros, obtener el array-Índice y asociación, usar $row['content'] */ public function fetch_array($resultt="") { if($resultt<>"{") return mysql_fetch_array($resultt);} } else { return mysql_fetch_array($this->result); } } //Obtener array asociativo, usar $row['nombre_deCampo'] public function fetch_assoc() { return mysql_fetch_assoc($this->result); } //Obtener array de índices numéricos, usar $row[0],$row[1],$row[2\\ public function fetch_row() { return mysql_fetch_row($this->result); } //Obtener array de objetos, usar $row->content public function fetch_Object() { return mysql_fetch_object($this->result); } //Simplificación de búsqueda select public function findall($table) { $this-query("SELECT * FROM $table"); } //Simplificación de búsqueda select public function select($table, $columnName = "*", $condition = '', $debug = '') { $condition = $condition ? ' Where ' . $condition : NULL; if ($debug) { echo "SELECT $columnName FROM $table $condition"; } else { $this-query("SELECT $columnName FROM $table $condition"); } } //Simplificación de eliminación del public function delete($table, $condition, $url = '') { if ($this-query("DELETE FROM $table WHERE $condition")) { if (!empty ($url)) $this-Get_admin_msg($url, '¡Eliminado con éxito!'); } } //Simplificación de inserción insert public function insert($table, $columnName, $value, $url = '') { if ($this-query("INSERT INTO $table ($columnName) VALUES ($value)")) { if (!empty ($url)) $this->Get_admin_msg($url, '¡Añadido con éxito!'); } } //Simplificar la modificación de update public function update($table, $mod_content, $condition, $url = '') { //echo "UPDATE $table SET $mod_content WHERE $condition"; exit(); if ($this->query("UPDATE $table SET $mod_content WHERE $condition")) { if (!empty ($url)) $this->Get_admin_msg($url); } } /*Obtener el ID producido por la última operación INSERT*/ public function insert_id() { return mysql_insert_id(); } //Apuntar a un registro de datos específico public function db_data_seek($id) { if ($id > 0) { $id = $id -1; } if (!@ mysql_data_seek($this->result, $id)) { $this->show_error("La consulta SQL está errónea:", "Los datos especificados están vacíos"); } return $this->result; } // Calcular el número de filas del conjunto de resultados según la consulta select public function db_num_rows() { if ($this->result == null) { if ($this->show_error) { $this->show_error("Error de consulta SQL", "Temporalmente vacío, sin contenido alguno!"); } } else { return mysql_num_rows($this->result); } } // Obtener el número de filas afectadas según el resultado de insert, update, delete public function db_affected_rows() { return mysql_affected_rows(); } //Mostrar la consulta SQL public function show_error($message = "", $sql = "") { if (!$sql) { echo "<font color='red'>" . $message . "<"/font>"; />"; } else { echo "<legend>提示错误信息:< legend><br/echo "<div style='font />"; size:-px; clear:both; font14family:Verdana, Arial, Helvetica, sans-serif;'>";-0px; background:#000000; border: echo "<div style='height:2px #000000 solid'>";1echo "<font color='white'>错误号: <12142div><br/font>"; echo "</错误原因:" . mysql_error() . "<br />"; echo "<br /><br />"; echo "<div style='height:20px; background:#FF0000; border:1px #FF0000 solid'>"; echo "<font color='white'>" . $message . "</font>"; echo "</div>"; echo "<font color='red'><pre>" . $sql . "</pre></font>"; $ip = $this->getip(); if ($this->bulletin) { $time = date("Y-m-d H:i:s"); $message = $message . "\r\n$this->sql" . "\r\nIP del cliente:$ip" . "\r\nTiempo :$time" . "\r\n\r\n"; $server_date = date("Y-m-d"); $filename = $server_date . ".txt"; $file_path = "error/" . $filename; $error_content = $message; //$error_content="La base de datos es incorrecta, no se puede conectar"; $file = "error"; //configurar el directorio de almacenamiento de archivos //crear carpeta if (!file_exists($file)) { if (!mkdir($file, 0777)) { //el modo predeterminado es 0777significa el derecho de acceso máximo posible die("el directorio de subida de archivos no existe y la creación falló"); } } //Crear archivo de fecha txt if (!file_exists($file_path)) { //echo "Crear archivo de fecha"; fopen($file_path, "w+"); //Primero, asegúrate de que el archivo existe y es writable if (is_writable($file_path)) { //Abrir $filename en modo de adición, el puntero de archivo estará al principio del archivo if (!$handle = fopen($file_path, 'a')) { echo "No se puede abrir el archivo $filename"; exit; } //Escribir $somecontent en el archivo que hemos abierto. if (!fwrite($handle, $error_content)) { echo "No se puede escribir en el archivo $filename"; exit; } //echo "El archivo $filename se ha escrito con éxito"; echo "——¡Los registros de errores se han guardado!"; //Cerrar archivo fclose($handle); } else { echo "El archivo $filename no se puede escribir"; } } else { //Primero, asegúrate de que el archivo existe y es writable if (is_writable($file_path)) { //Abrir $filename en modo de adición, el puntero de archivo estará al principio del archivo if (!$handle = fopen($file_path, 'a')) { echo "No se puede abrir el archivo $filename"; exit; } //Escribir $somecontent en el archivo que hemos abierto. if (!fwrite($handle, $error_content)) { echo "No se puede escribir en el archivo $filename"; exit; } //echo "El archivo $filename se ha escrito con éxito"; echo "——¡Los registros de errores se han guardado!"; //Cerrar archivo fclose($handle); } else { echo "El archivo $filename no se puede escribir"; } } } />"; if ($this->is_error) { exit; } } echo "</div>"; echo "</fieldset>"; />"; } //Liberar conjunto de resultados public function free() { @ mysql_free_result($this->result); } //Selección de base de datos public function select_db($db_database) { return mysql_select_db($db_database); } //Consultar número de campos public function num_fields($table_name) { //return mysql_num_fields($this->result); $this->query("select * from $table_name"); />"; echo "Número de campos: " . $total = mysql_num_fields($this->result); echo "<pre>"; for ($i = 0; $i < $total; $i++) { print_r(mysql_fetch_field($this->result, $i)); } echo "</pre>"; />"; } //Obtener información del servidor MySQL public function mysql_server($num = '') {}} switch ($num) { case 1 : return mysql_get_server_info(); //Información del servidor MySQL break; case 2 : return mysql_get_host_info(); //Obtener la información del anfitrión de MySQL break; case 3 : return mysql_get_client_info(); //Obtener la información del cliente de MySQL break; case 4 : return mysql_get_proto_info(); //Obtener la información del protocolo de MySQL break; default : return mysql_get_client_info(); //Obtener la información de la versión de mysql por defecto } } //Función de destrucción, cierre automático de la base de datos, mecanismo de reciclaje de basura public function __destruct() { if (!empty ($this->result)) { $this->free(); } mysql_close($this->conn); } //function __destruct(); /*Obtener la dirección IP real del cliente*/ function getip() { if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) { $ip = getenv("HTTP_CLIENT_IP"); } if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) { $ip = getenv("HTTP_X_FORWARDED_FOR"); } if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) { $ip = getenv("REMOTE_ADDR"); } if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) { $ip = $_SERVER['REMOTE_ADDR']; } else { $ip = "unknown"; } return ($ip); } function inject_check($sql_str) { //Prevenir la inyección $check = eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); if ($check) { echo "Contenido de inyección ilegal!"; exit (); } else { return $sql_str; } } function checkurl() { //Revisión de procedencia if (preg_replace("/https?:\/\/([^\:\/\\+).*/i1", $_SERVER['HTTP_REFERER']) !== preg_replace("/([^\:]+).*/", "\\1", $_SERVER['HTTP_HOST'])) { header("Location: http://www.dareng.com"); exit(); } } } ?>
Los códigos de ejemplo de la clase de encapsulación php mysql que el editor les ha presentado esperamos que les sean útiles. Si tienen alguna pregunta, no dudes en dejarme un mensaje, el editor responderá a tiempo. ¡Gracias también por el apoyo a la página web de la enseñanza de los gritos!
Declaración: El contenido de este artículo se ha obtenido de la red, es propiedad del autor original, el contenido se ha contribuido y subido por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha procesado editorialmente por humanos y no asume responsabilidad por las responsabilidades legales relacionadas. Si encuentra contenido sospechoso de violación de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @ para denunciar y proporcione evidencia relevante. Si se verifica, este sitio eliminará inmediatamente el contenido sospechoso de infracción de derechos de autor.)