Foros del Web » Programando para Internet » PHP »

duda en Clase PHP para conexion

Estas en el tema de duda en Clase PHP para conexion en el foro de PHP en Foros del Web. Hola a todos y gracias en antemano quiero ver como puedo hacer una clase para conexion de MySQL y PostGreSQL para crear un script para ...
  #1 (permalink)  
Antiguo 23/04/2014, 17:45
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
duda en Clase PHP para conexion

Hola a todos y gracias en antemano

quiero ver como puedo hacer una clase para conexion de MySQL y PostGreSQL
para crear un script para que funcione en las dos tipo de funciones.
  #2 (permalink)  
Antiguo 23/04/2014, 18:10
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en Clase PHP para conexion

hola a todos encontre esto

Código PHP:
Ver original
  1. // FUNCIÓN DE CONEXIÓN CON LA BASE DE DATOS MYSQL O CON SQLITE
  2.  
  3. define ("MYSQL",  "MySQL");
  4. define ("SQLITE", "SQLite");
  5. $dbMotor = SQLITE;                                // Base de datos empleada
  6. if ($dbMotor == MYSQL) {
  7.     define("MYSQL_HOST", "mysql:host=localhost"); // Nombre de host MYSQL
  8.     define("MYSQL_USUARIO", "root");              // Nombre de usuario de MySQL
  9.     define("MYSQL_PASSWORD", "");                 // Contraseña de usuario de MySQL
  10.     $dbDb    = "mclibre_baseDeDatos";             // Nombre de la base de datos
  11.     $dbTabla = $dbDb . ".tabla";                  // Nombre de la tabla
  12. } elseif ($dbMotor == SQLITE) {
  13.     $dbDb    = "/tmp/mclibre_baseDeDatos.sqlite"; // Nombre de la base de datos
  14.     $dbTabla = "tabla";                           // Nombre de la tabla
  15. }
  16.  
  17. function conectaDb()
  18. {
  19.     global $dbMotor, $dbDb;
  20.    
  21.     try {
  22.         if ($dbMotor == MYSQL) {
  23.             $db = new PDO(MYSQL_HOST, MYSQL_USUARIO, MYSQL_PASSWORD);
  24.             $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
  25.         } elseif ($dbMotor == SQLITE) {
  26.             $db = new PDO("sqlite:" . $dbDb);
  27.         }
  28.         return($db);
  29.     } catch (PDOException $e) {
  30.         cabecera("Error grave");
  31.         print "<p>Error: No puede conectarse con la base de datos.</p>\n";
  32. //        print "<p>Error: " . $e->getMessage() . "</p>\n";
  33.         pie();
  34.         exit();
  35.     }
  36. }
  37. // EJEMPLO DE USO DE LA FUNCIÓN ANTERIOR
  38. // La conexión se debe realizar en cada página que acceda a la base de datos
  39. $db = conectaDB();

me gusto esta funcion pero quiero para MYSQL O PostgreSQL y sin usar PDO aver si es posible

Última edición por xoceunder; 23/04/2014 a las 19:11
  #3 (permalink)  
Antiguo 23/04/2014, 19:43
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en Clase PHP para conexion

A ver si estoy bien con esto o si estoy mal

Código PHP:
Ver original
  1. <?php
  2. // FUNCIÓN DE CONEXIÓN CON LA BASE DE DATOS MYSQL O CON PgSQL
  3.  
  4. define ("MYSQL",  "MySQL");
  5. define ("PGSQL", "PgSQL");
  6. $dbMotor = SQLITE;                                // Base de datos empleada
  7. if ($dbMotor == MYSQL) {
  8.     define("MYSQL_HOST", "mysql:host=localhost"); // Nombre de host MYSQL
  9.     define("MYSQL_USUARIO", "root");              // Nombre de usuario de MySQL
  10.     define("MYSQL_PASSWORD", "1234");             // Contraseña de usuario de MySQL
  11.     $dbDb    = "baseDeDatos";                     // Nombre de la base de datos
  12.     $dbTabla = $dbDb . ".tabla";                  // Nombre de la tabla
  13. } elseif ($dbMotor == PGSQL) {
  14.     define("PGSQL_HOST", "pgsql:host=localhost"); // Nombre de host PGSQL
  15.     define("PGSQL_USUARIO", "root");              // Nombre de usuario de PGSQL
  16.     define("PGSQL_PASSWORD", "1234");             // Contraseña de usuario de PGSQL
  17.     define("PGSQL_PORT", "");                     // Contraseña de puerto de PGSQL
  18.     $dbDb    = "baseDeDatos";                     // Nombre de la base de datos
  19.     $dbTabla = $dbDb . ".tabla";                  // Nombre de la tabla
  20. }
  21.  
  22. function conectaDb()
  23. {
  24.     global $dbMotor, $dbDb;
  25.    
  26.     try {
  27.         if ($dbMotor == MYSQL) {
  28.             $db = new PDO(MYSQL_HOST, MYSQL_USUARIO, MYSQL_PASSWORD);
  29.             $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
  30.         } elseif ($dbMotor == SQLITE) {
  31.             $db = new PDO(PGSQL_HOST, PGSQL_PORT, PGSQL_USUARIO, PGSQL_PASSWORD);
  32.             $db->setAttribute(PDO::PGSQL_ATTR_USE_BUFFERED_QUERY, true);   
  33.         }
  34.         return($db);
  35.     } catch (PDOException $e) {
  36.         cabecera("Error grave");
  37.         print "<p>Error: No puede conectarse con la base de datos.</p>\n";
  38. //        print "<p>Error: " . $e->getMessage() . "</p>\n";
  39.         pie();
  40.         exit();
  41.     }
  42. }
  43. // EJEMPLO DE USO DE LA FUNCIÓN ANTERIOR
  44. // La conexión se debe realizar en cada página que acceda a la base de datos
  45. $db = conectaDB();
  #4 (permalink)  
Antiguo 24/04/2014, 04:32
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en Clase PHP para conexion

quien me puede ayudar con esto
  #5 (permalink)  
Antiguo 24/04/2014, 08:04
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: duda en Clase PHP para conexion

No comentas si te marca algún error, pero a esta parte de codigo le hice unos cambios:
Código PHP:
Ver original
  1. $dbMotor = 'Aqui es MYSQL o PGSQL';                                
  2.  
  3. if ($dbMotor == MYSQL) {
  4.     define("MYSQL_HOST", 'mysql:host=localhost;dbname=testdb';); // Nombre de hos
  5.     define("MYSQL_USUARIO", "root");              // Nombre de usuario de MySQL
  6.     define("MYSQL_PASSWORD", "1234");             // Contraseña de usuario de MySQL
  7.     $dbDb    = "baseDeDatos";                     // Nombre de la base de datos
  8.     $dbTabla = $dbDb . ".tabla";                  // Nombre de la tabla
  9. } elseif ($dbMotor == PGSQL) {
  10.     define("PGSQL_HOST", 'pgsql:host=localhost;dbname=testdb'); // Nombre de host PGSQL
  11.     define("PGSQL_USUARIO", "root");              // Nombre de usuario de PGSQL
  12.     define("PGSQL_PASSWORD", "1234");             // Contraseña de usuario de PGSQL
  13.     define("PGSQL_PORT", "");                     // Contraseña de puerto de PGSQL
  14.     $dbDb    = "baseDeDatos";                     // Nombre de la base de datos
  15.     $dbTabla = $dbDb . ".tabla";
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #6 (permalink)  
Antiguo 24/04/2014, 08:46
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: duda en Clase PHP para conexion

Lo que pasa es que si no quieres usar PDO pero quieres poder cambiar de motor en cualquier momento entre MySQL / PostGreSQL / etc .. te vas a encontrar con que debes TU hacer todas las generalizaciones (abstracciones)
__________________
Salu2!
  #7 (permalink)  
Antiguo 25/04/2014, 17:15
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en Clase PHP para conexion

eror en mysql

Fatal error: Call to a member function query() on a non-object in C:\AppServ\www\iptv\index.php on line 10


conf.php
Código PHP:
Ver original
  1. <?php
  2. // FUNCIÓN DE CONEXIÓN CON LA BASE DE DATOS MYSQL O CON PgSQL
  3.  
  4. define ("MYSQL",  "MySQL");
  5. define ("PGSQL", "PgSQL");
  6. $dbMotor = MYSQL;                                // Base de datos empleada
  7. if ($dbMotor == MYSQL) {
  8.     define("MYSQL_HOST", "mysql:host=localhost"); // Nombre de host MYSQL
  9.     define("MYSQL_USUARIO", "root");              // Nombre de usuario de MySQL
  10.     define("MYSQL_PASSWORD", "12345");             // Contraseña de usuario de MySQL
  11.     $dbDb    = "panel";                     // Nombre de la base de datos
  12.     $dbTabla = $dbDb . ".user";                  // Nombre de la tabla
  13. } elseif ($dbMotor == PGSQL) {
  14.     define("PGSQL_HOST", "pgsql:host=localhost"); // Nombre de host PGSQL
  15.     define("PGSQL_USUARIO", "root");              // Nombre de usuario de PGSQL
  16.     define("PGSQL_PASSWORD", "1234");             // Contraseña de usuario de PGSQL
  17.     define("PGSQL_PORT", "");                     // Contraseña de puerto de PGSQL
  18.     $dbDb    = "baseDeDatos";                     // Nombre de la base de datos
  19.     $dbTabla = $dbDb . ".tabla";                  // Nombre de la tabla
  20. }
  21.  
  22. function conectaDb()
  23. {
  24.     global $dbMotor, $dbDb;
  25.    
  26.     try {
  27.         if ($dbMotor == MYSQL) {
  28.             $db = new PDO(MYSQL_HOST, MYSQL_USUARIO, MYSQL_PASSWORD);
  29.             $db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
  30.         } elseif ($dbMotor == PGSQL) {
  31.             $db = new PDO(PGSQL_HOST, PGSQL_PORT, PGSQL_USUARIO, PGSQL_PASSWORD);
  32.             $db->setAttribute(PDO::PGSQL_ATTR_USE_BUFFERED_QUERY, true);   
  33.         }
  34.         return($db);
  35.     } catch (PDOException $e) {
  36.         cabecera("Error grave");
  37.         print "<p>Error: No puede conectarse con la base de datos.</p>\n";
  38. //        print "<p>Error: " . $e->getMessage() . "</p>\n";
  39.         pie();
  40.         exit();
  41.     }
  42. }
  43. // EJEMPLO DE USO DE LA FUNCIÓN ANTERIOR
  44. // La conexión se debe realizar en cada página que acceda a la base de datos
  45. // $db = conectaDB();

index.php
Código PHP:
Ver original
  1. include("clase_bd.php");
  2. $db = conectaDB();
  3.  
  4. $consulta = "SELECT * FROM $dbTabla";
  5. $result = $db->query($consulta);
  6. if (!$result) {
  7.     print "<p>Error en la consulta.</p>\n";
  8. } else {
  9.     foreach ($result as $valor) {
  10.         print "<p>$valor[nombre] $valor[apellidos]</p>\n";
  11.     }
  12. }
  #8 (permalink)  
Antiguo 26/04/2014, 06:52
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 759
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: duda en Clase PHP para conexion

ok ya con esto encontre lo que necesitaba

Código PHP:
Ver original
  1. // switching
  2.     switch($dbtype)
  3.     {
  4.        case "mysql":
  5.            mysql_connect($dbhost, $dbuser, $dbpass);
  6.            mysql_select_db( $dbname );
  7.            break;
  8.  
  9.        case "pgsql":
  10.            pg_connect("host=$dbhost port=$dbport dbname=$dbname user=$dbuser password=$dbpass");  
  11.            break;
  12.     }

pero haora quiero crear function para poder operar con las bd ejemplo
insertar selecionar ect...

Etiquetas: clase, conexion, mysql, sql
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




La zona horaria es GMT -6. Ahora son las 14:34.