[MYSQL] Error con consulta [SOLUCIONADO]

Iniciado por klaine, 31 Octubre 2011, 05:52 AM

0 Miembros y 1 Visitante están viendo este tema.

klaine

Hola tengo un problemilla con la sintaxis de una funcion, me he qebrado la cabeza todo el dia tratando de ver que es, se supone que hay un registro que tiene el dato 'BC3' que debiera tomar la consulta "select * from b_disponibles" (la cual es una vista), el caso es que al mostrar me muestra 0

me conecto a la base de datos de tal forma:

He probado mostrar si la conexion funka, me muestra que si

Código (php) [Seleccionar]


mysql_connect("localhost", "root", "");

mysql_query("use providencia");



La funcion que me retorna el resultset es la siguiente:

Código (php) [Seleccionar]


function getAvailableBicicles(){

               $r = mysql_query("select * from b_disponibles");

               return $r;

}



Luego trato de hacer lo tipico con el resultset:

Código (php) [Seleccionar]


$row2=getAvailableBicicles();

           while($fila = mysql_fetch_array($row2)){

               $val = $fila['cod_bicicleta'];

           echo $val," <br>";

           }



El nombre de la columna esta bien escrito, he probado con fetch_assoc, fetch_row y nada, me muestra 0 siendo que en la tabla no hay ningun registro con ese valor  :P

Dejo la tabla bicicletas:

Código (mysql) [Seleccionar]


create table bicicleta(

cod_bicicleta varchar(255) not null primary key,
estado varchar(6) not null -- 'usando' o 'libre'

)engine=innodb;



La vista bicicletas libres:

Código (mysql) [Seleccionar]


create view b_disponibles as
select * from bicicleta where estado ='libre';



Finalmente los inserts:

Código (mysql) [Seleccionar]


insert into bicicleta(cod_bicicleta, estado)values('bc1', 'usando');
insert into bicicleta(cod_bicicleta, estado)values('bc2', 'usando');
insert into bicicleta(cod_bicicleta, estado)values('bc3', 'libre');



Antes de la creacion de las tablas esta la creacion de bases de datos y su uso xD (por si acaso)

Código (mysql) [Seleccionar]


drop database if exists providencia;
create database providencia;
use providencia;



De antemano, gracias por sus respuestas.

PD: En la shell de mysql funka  :-\

Ari Slash


adastra

Probablemente te falla porque tiras de una vista, has intentado ejecutar directamente la consulta contra la tabla? sin intentar ejecutar la vista?

klaine

Cita de: adastra en 31 Octubre 2011, 12:03 PM
Probablemente te falla porque tiras de una vista, has intentado ejecutar directamente la consulta contra la tabla? sin intentar ejecutar la vista?

Hace poco lo hice, tampoko me funka, pero si me funka desde la shell de mysql

s00rk

#4
Yo prefiero usar mysql_fetch_object se me hace mucho mejor , aunque en si entre ellas no hay mucha diferencia pero nunca me ha dado problemas talvez y te funcione  :rolleyes:

Código (php) [Seleccionar]

$row2=getAvailableBicicles();

while($fila = mysql_fetch_object($row2))
{
    $val = $fila->cod_bicicleta;
    echo $val." <br>";
}

klaine

#5
Lol, por arte de magia ahora funka  :¬¬, no se me que me dió por ejecutarlo para ver una vez mas ese 0, funciona sin haberle hecho ningun cambio, pero gracias de todas formas, aprendi cosas que no esperaba aprender  :xD

:silbar:

Habrá sido cosa del chrome o quizas del netbeans? o a lo mejor habrá sido un agujero negro que interseccionó con la luz reflejada del planeta venus que me impidió toda la tarde de ayer ver el correcto resultado del programa? si, yo creo que la última es la más lógica

Saludos! y, una vez mas gracias!

Shell Root

A ver, podrías intentar poniendo algunas excepciones o mensajes para ver en que depronto está fallando, por ejemplo...

Código (php) [Seleccionar]
$handler = mysql_connect('127.0.0.1', 'root', '');
if (!$handler) {
    die ('<b>Error</b>: ' . mysql_error());
}
$dbSelected = mysql_select_db('providencia', $handler);
if (!$dbSelected ) {
    die ('<b>Error</b>: ' . mysql_error());
}


Primero intenta la conexión, si es correcta, pasaremos a otro punto. Espero tu respuesta.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.