error mysqli

privet

Hola shavales a ver si me podéis echar un cable, tengo el siguiente error:
Warning: mysqli_select_db() expects parameter 1 to be mysqli, bool given in C:\xampp\htdocs\examen\biblioteca.php on line 13

Os comento, tengo que hacer 2 funciones, una es para crear la conexión, y otra es para darle el nombre de la base de datos

Estas son las dos funciones

<?php

function Conexion ($host,$usuario,$password){

 return mysqli_connect($host,$usuario,$password) or die('No se ha podido conectar a la base de datos');
}

function seleccionarBD($bd,$host,$usuario,$password){
    
$conexion = Conexion($host,$usuario,$password); return mysqli_select_db($conexion,$bd) or die('No se encuentra la base de datos'); } ?>

Y esta es donde lo estoy probando

<?php

include('biblioteca.php');

Conexion("localhost","root","");

seleccionarBD("fruteria","localhost","root","",);

?>

Gracias!

Grise

Te está devolviendo mysqli_connect FALSE porque no puede conectar, por eso te dice lo del boolean.

1 respuesta
privet

#2 y donde podría estar el error ? En la variable $conexion ?

2 respuestas
eXtreM3

#3 por lo pronto aquí tienes una coma que te sobra al final

seleccionarBD("fruteria","localhost","root","",);
1 respuesta
privet

#4 eso lo puse sin querer al copiar

x0s3

#3 Estás conectando a la DB dos veces seguidas sin cerrar conexión, no sé porqué lo estás haciendo así. si en la función del select ya conectas ¿por qué lanzas la función de conectar antes de la del select?

2 respuestas
gohrum

a botepronto no veo nada raro, quizas lo que dice #6 que al haber abierto ya la conexión, está rechazando otra conexión o algo así.
Prueba a hacer el clásico die(var_dump($conexion)); a ver que sale

No debería molestarme tanto la función seleccionarBD, pero me molesta muchísimo

privet

#6 Ahi es dónde tengo el problema, que no sé cómo hacer para que en

mysqli_select_db($conexion,$bd)

Es que no hay alguna manera, para poder utilizar la variable $conexion de la primera funcion ? Poder utilizarla ahi ?

<?php
function Conexion ($host,$usuario,$password){

  $conexion=mysqli_connect($host,$usuario,$password) or die('No se ha podido conectar a la base de datos');
return $conexion;
}

function seleccionarBD($bd,$host,$usuario,$password){
    
$conexion = Conexion($host,$usuario,$password); $mybd= mysqli_select_db($conexion,$bd) or die('No se encuentra la base de datos'); return $mybd; } ?>

Ahora este ya me va, pero claro no es nada optimo.. La cosa seria en seleccionarBD($BD) fuera así, no con 4 parámetros.

Es que luego tengo que hacer otra funcion para las consultar, y claro si ahora en esa funcion tengo que añadirle, los parametros de la consulta+parametros de la conexión+parametros de base de datos, se va a quedar eso inmenso, para la chorrada que estoy haciendo

ududud

Veo 2 opciones, 1 ) metes todo dentro de una misma función, me refiero que te pida $host, $usuario, $password, $bd. 2) declarar la $conexion fuera de la función,

y luego de que se cree la conexión, dicha variable tendría los datos cargados y accedes a ella utilizando el global $conexion?

privet
function connect ($db_host,$db_usuario,$db_contra){

    $conexion =mysqli_connect($db_host,$db_usuario,$db_contra) or die('No se ha podido conectar a la base de datos');
    
    return $conexion;
}

function changedb($conexion,$db){

   mysqli_select_db($conexion,$db) or die('No se encuentra la base de datos');

    return $conexion;
}
$variable=connect("localhost","root","");
   $variable=  changedb($variable,"empresa");

eso faltaba, os pongo un suspenso por no saber la respuesta

Es broma muchas gracias!

Usuarios habituales

  • privet
  • ududud
  • gohrum
  • x0s3
  • eXtreM3
  • Grise