Llamada a base de datos

  • Autor Autor elargento
  • Fecha de inicio Fecha de inicio
elargento

elargento

Zeta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Estoy investigando sobre hacer un archivo config para un proyecto en PHP. La mayoria sugiere devolver un array con los datos de conexion.
Ahora bien, debo llamar al array cada vez que por ejemplo quiera ejecutar una consulta en la bd?

Insertar CODE, HTML o PHP:
[/FONT][/COLOR]

[LIST]
[*]<?php
[*][COLOR=#9952B2]$database[/COLOR] = [COLOR=#075EB6]include[/COLOR]([COLOR=#709C1A]'config.php'[/COLOR]);
[*][COLOR=#075EB6]echo[/COLOR] [COLOR=#9952B2]$database[/COLOR][[COLOR=#709C1A]'host'[/COLOR]]; [COLOR=#999999]// 'localhost'[/COLOR]
[*]?>
[/LIST]
[COLOR=#1D2129][FONT=helvetica]
https://www.abeautifulsite.net/a-better-way-to-write-config-files-in-php
 
[MENTION=1148]elargento[/MENTION] yo siempre hago la llamada a la base de datos asi desde mis simples archivos php así
PHP:
//conetarme a db
$servidor = 'localhost';
$db = 'nombre_base_de_datos';
$u = 'root';
$p = '';
$con = mysqli_connect($servidor,$u,$p,$db);
$con->query("SET NAMES 'utf8'");
 
¿Que extensión vas a usar para acceder a la BD mysqli, pdo u otro?

Si vas a usar mysqli en el archivo config.php puedes:
PHP:
<?php
$mysqli = new mysqli("servidorbd", "user", "pass", "nombre");
if ($mysqli->connect_errno) {
die('Error al conectar');}

Y luego cuando quieras ejecutar una consulta usas:
PHP:
$mysqli->query('SENTENCIA SQL');


---------------------------------------------------------------------
Pero si prefieres ponerlo como dice en ese post simplemente pones en el config.php
PHP:
<?php
return [
    'host' => 'localhost',
    'name' => 'somedb',
    'user' => 'someuser',
    'pass' => 'somepass'
];
?>

Y luego en un archivo donde vayas a necesitar acceder a la base de datos:
PHP:
$basedatos = include('config.php');
$mysqli = new mysqli($basedatos['host'],$basedatos['user'], $basedatos['pass'], $basedatos['name']);
if ($mysqli->connect_errno) {
die('Error al conectar');}


Aun que a mi personalmente me parece más cómoda la primera manera que te dije.

Saludos
 
Última edición:
Insertar CODE, HTML o PHP:
$database = include('config.php');
Esto no te tira un error?

Por lo regular siempre se define una función o un método si usas POO el cual llama al array de configuración, y después vuelves a llamar a esa función cada vez que necesites datos
 
No amigo, se puede usar include en una variable y si el archivo devuelve algún valor con return esa variable adquiere ese valor.
Echa un ojo al ejemplo #5: PHP: include - Manual

Acabo de ver es una practica algo moderna, la usan mucho en Laravel! gracias :encouragement:
 
PHP:
<?php 
//puedes agregar las constantes en un archivo config
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'nombre de la base de datos');

/**
 * Esta es la clase de la coneccion a la base de datos
 */
class Database
{
   private $conn;
   private $error;

   //el metodo magico que ejecuta la coneccion
   function __construct()
   {
      $this->db_connect();
   }

   //abres la coneccion
   public function db_connect()
   {
      try {
         $this->conn = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PASS);
         
      } catch (PDOException $e) {
         die("Error al conectar con la base de datos" . $this->error = $e->getMessage());
      }
      
   }
   //Creamos un helper para la consulta
   public function query($sql)
   {
      return $this->conn->prepare($sql);
   }
}

$database = new Database();

//Ejmplo de una consulta a la base de datos

/**
 * esta es la clase consulta para crear una consulta de ejemplo
 */
class Consulta
{
   
   public function listar()
   {
      global $database;

      $sql = "SELECT * FROM tu_tabla";

      $statement = $database->query($sql);
      $statement->execute();

      return $statement->fetch(PDO::FETCH_ASSOC);
   }
}

//instanciamos el objeto cunsulta
$consulta = new Consulta();

// llamamos el metodo de la clase consulta
// guardamos el resultado en una variable

$filas = $consulta->listar();

//hacemos un loop de las filas
foreach ($filas as $fila) 
{
   echo $fila['tu_index'];
}



 ?>
 
Te recomendaría utilizar PDO (https://secure.php.net/manual/es/book.pdo.php), podrás utilizarlo con distintas bases de datos y ganarás portabilidad en tus desarrollos.

Una vez realizas la conexión a la DB -siempre que NO la cierres tras realizar la consulta- no es necesario realizarla de nuevo para realizar consultas. Al final del script es recomendable cerrar siempre la conexión.
 
Yo lo que suelo hacer es crear constantes (define).
 
Atrás
Arriba