Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Clase en php

Estas en el tema de Clase en php en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Les dejo esta clase en php que nos ayudara a manipular la conexión con la base de datos en Mysql cualquier duda comenten funciona al ...
  #1 (permalink)  
Antiguo 16/11/2010, 23:40
 
Fecha de Ingreso: noviembre-2010
Mensajes: 3
Antigüedad: 13 años, 5 meses
Puntos: 0
Información Clase en php

Les dejo esta clase en php que nos ayudara a manipular la conexión con la base de datos en Mysql cualquier duda comenten funciona al 100% :D


Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. $bd = new Bd();
  5.  
  6. class Bd {
  7.    var $host = "localhost";
  8.    var $user="usuario_de_la_base_datos";
  9.    var $password="password_de_la_base_datos";
  10.    var $database="_base_datos";
  11.    var $conn;
  12.  
  13.    const ABIERTA = 1;
  14.    const CERRADA = 0;
  15.  
  16.   // var $status = CERRADA;
  17.  
  18.  
  19. //Abre la base de datos
  20. public function open(){
  21.  
  22.    $this->conn = mysql_connect($this->host, $this->user, $this->password) or die (mysql_error());
  23.    mysql_select_db($this->database, $this->conn) or die (mysql_error());
  24.    $this->status=Bd::ABIERTA;
  25.    
  26. }  // end open
  27.  
  28.  
  29. //Cierra la base de datos
  30. public function close(){
  31.    mysql_close($this->conn);
  32.    $this->status=Bd::CERRADA;
  33. }  //end close
  34.  
  35.  
  36. //Ejecuta una consulta que no devuelve resultados,
  37. //para insertar, modificar, eliminar
  38. // @param string $sql Consulta SQL
  39. public function ExecuteNonQuery($sql) {
  40.      $this->open();
  41.       $rs = mysql_query($sql, $this->conn);
  42.    settype($rs, "null");
  43.    $affected_rows = mysql_affected_rows();
  44.    return($affected_rows);  
  45. } //end ExecuteNonQuery
  46. //*********************************************************************************************
  47.  
  48. //Ejecuta una consulta SQL
  49. // @param string $query Consulta SQL
  50. // @return un array de registros, cada uno siendo un array asociativo de campos
  51. public function Execute($query){
  52.     $this->open();
  53.    $rs = mysql_query($query, $this->conn);
  54.  
  55.    //paso el recordset a array asociativo
  56.    $registros = array();
  57.    while ($reg=mysql_fetch_array($rs)) {
  58.      $registros[] = $reg;
  59.    } //end while
  60.    return $registros;
  61. } //end Execute
  62.  
  63. //***********************************************************************************  Devuelve un solo registro
  64. public function Execute_a($query){
  65.     $this->open();
  66.    $rs = mysql_query($query, $this->conn);
  67.  
  68.    $reg=Mysql_Fetch_Assoc($rs);
  69.  
  70.    return $reg;
  71. } //end Execute_a
  72.  
  73. //***********************************************************************************
  74.  
  75. //Ejecuta una consulta devolviendo una fila (registro) con todos sus campos
  76. //@param string $tableName Nombre de la tabla
  77. //@param string $filter Filtro SQL para el where
  78. //@return un array asociativo de campos
  79. public function ExecuteRecord($tableName, $filter) {
  80.    $todos = $this->Execute("SELECT * FROM $tableName WHERE $filter;");
  81.    return $todos[0];
  82. } //end ExecuteRecord
  83.  
  84.  
  85. //Ejecuta una consulta devolviendo una columna (campo) con todos sus registros
  86. //@param string $tableName Nombre de la tabla
  87. //@param string $field Nombre del campo a traer
  88. //@param string $filtro Filtro del where, OBLIGATORIO
  89. //@return un array asociativo de valores de cada registro
  90. public function ExecuteField($tableName, $field, $filter) {
  91.    $todos = $this->Execute("SELECT $field FROM $tableName WHERE $filter;");
  92.    $aux = array();
  93.    foreach ($todos as $uno) {
  94.       $aux[] = $uno;
  95.    } //end foreach
  96.    return $aux;
  97. } //end ExecuteField
  98.  
  99.  
  100. //Obtiene todos los registro de una tabla
  101. //@param string $tableName Nombre de la tabla
  102. //@param string $orden Campo por el cual ordenar (opcional)
  103. //@return un array de registros, cada uno un array asociativo
  104. public function ExecuteTable($tableName, $orden="") {
  105.    if($orden!="")
  106.       return $this->Execute("SELECT * FROM " . $tableName . " ORDER BY " . $orden);
  107.    else
  108.       return $this->Execute("SELECT * FROM " . $tableName);  
  109. } //End ExecuteTable
  110.  
  111.  
  112. //Obtiene un solo valor de la base de datos
  113. //@param string $query Consulta SQL (1x1)
  114. //@return el valor devuelto por la consulta
  115. public function ExecuteScalar($query) {
  116.  $this->open();
  117.    $rs = mysql_query($query, $this->conn) or die (mysql_error());
  118.    $reg = mysql_fetch_array($rs);
  119.    return $reg;
  120. } //end ExecuteScalar
  121.  
  122.  
  123. //Devuelve la cantidad de registro de una tabla
  124. // @param string $tableName Nombre de la tabla
  125. // @return Cantidad de registros
  126. public function RecordCount($tableName) {
  127.   return $this->ExecuteScalar("SELECT COUNT(*) FROM " . $tableName);
  128. }  //end RecordCount
  129.  
  130. } //end class
  131. ?>
  #2 (permalink)  
Antiguo 17/11/2010, 10:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Tema movido desde PHP a Frameworks y PHP orientado a objetos
  #3 (permalink)  
Antiguo 17/11/2010, 23:29
 
Fecha de Ingreso: noviembre-2010
Ubicación: León, Nic.
Mensajes: 13
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Clase en php

Me parece bien, al fin que (según lo que pude observar) puedes hacer todo lo básico para el manejo de una base de datos, perooo....

Me gustaría hacer énfasis que en cuanto a seguridad, hay varios hoyos, por ejemplo el escape de caracteres, ya es hora de migrar a mysqli ( y dejar a mysql para MySQL < 4.1.3); además de las grandes ventajas de POO que ofrece esta interfaz.

También, utilizar esta clase rompe con el esquema MVC, pues claramente está pensada para que los métodos sean invocados desde un Controlador; cuando todos los métodos de acceso a base de datos debería quedar en el Modelo.

Bien, es una opinión...

Fuera de tópico, es curioso pero me pareciera que tratara de emular a la forma en que trabaja .net. jojo

Etiquetas: clase-php-mysql, php-mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:35.