English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ejemplo de código de clase encapsulada php mysql

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.)

Te gustará