Foros del Web » Programando para Internet » PHP »

Clausula where

Estas en el tema de Clausula where en el foro de PHP en Foros del Web. Hola, estoy teniendo unos problemillas con esto de las consultas a mysql, Bueno yo tengo una web donde me paso una variable por url a ...
  #1 (permalink)  
Antiguo 15/04/2011, 19:45
 
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años, 8 meses
Puntos: 0
Clausula where

Hola, estoy teniendo unos problemillas con esto de las consultas a mysql,

Bueno yo tengo una web donde me paso una variable por url a una pagina de perfil, y pretendia basandome en esa variable hacer una consulta a mysql:

El problema es que cuando pongo un valor fijo como el "1" me devuelve el dato consultado, pero yo en vez de poner un dato fijo como el 1 quiero poner una variable

Código PHP:
<?php
    
include("connect.php");
    
$link=Conectarse();
    
$result=mysql_query("select * from tabla where ID = 1",$link);
    while(
$row mysql_fetch_array($result)) {
    
$id $row["ID"];
    
$cemail $row["ce-mail"];
    
$cliente $row["cliente"];
    }
        
mysql_free_result($result);
        
mysql_close($link);
?>
Pero nada.. me da este error, algo no hago bien

Alguien me peude orientar?

Última edición por ivanoide_3; 15/04/2011 a las 20:01
  #2 (permalink)  
Antiguo 15/04/2011, 20:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Clausula where

imprime mysql_error() y eso resolverá tus preguntas...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/04/2011, 20:09
 
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Clausula where

No me sale nada :S, yo soy capaz de que funcione con un valor fijo, lo que necesito es que me funcione haciendo que la condicion de la clausula where sea una variable y no un valor fijo:

en vez de $result=mysql_query("select * from tabla where ID = 1",$link);
que sea algo como $result=mysql_query("select * from tabla where ID = $variable",$link);
  #4 (permalink)  
Antiguo 15/04/2011, 20:13
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 11 meses
Puntos: 21
Respuesta: Clausula where

Veo que estas aprendiendo asique te voy a dar un par de recomendaciones:

-Veo que pones la función para conectar a la DB dentro de otra función... esto es medio 'al pedo'... te conviene (para ahorrar líneas nomas, pero es prácticamente lo mismo...)

En connect.php:
Código PHP:
$link mysql_connect('localhost','user','pass') or die();
mysql_select_db(db_name,$link) or die();
$db_error mysql_error($conn);

if(!empty(
$db_error)) {

            echo 
"Ha habido un error al conectar a la base de datos.<br> $db_error";

            
//echo "<meta http-equiv='Refresh' content='2;url=http://worldanime.tv/portal/index.php'>"; 

    

-Eso de hacer $_GET["id"] es inservible, no sirve de nada si después estas haciendo $id = $_GET["id"]

Otra cosa que veo es que estas usando mal las comillas...
No es lo mismo " que ' Usas " cuando estas encerrando una función o algo que php necesite "parcear" es decir, leer, interpretar, pero como en el caso del $_GET, que estas escribiendo simplemente "id" deberías usar 'id' Esto es mas que nada por una cuestión de optimización del código... Te recomiendo leer el siguiente post que explica perfectamente como se deben usar las comillas:
http://www.forosdelweb.com/f18/como-...s-bien-588701/

En la consulta:
En la parte where ID = $id debería ir así where ID = '$id'

Te recomiendo usar mysql_fetch_assoc() envezde mysql_fetch_array().

Para lo que vos estas haciendo, usar fetch_array no es estrictamente necesario. Podrías usar fetch_assoc que te va a funcionar igual y es más barato hablando de recursos consumidos y tiempo de ejecución de código...En otras palabras, más eficiente. Si queres saber a que se debe eso, lee la info de dichas funciones en el manual de PHP ;)

El código, optimizado y correcto debería quedar asi:
Código PHP:
    include('connect.php'); 
    
$id $_GET['id']; //Para que entiendas el uso de la doble comilla:
  /*  $idd = '34654';
    $id = $_GET["$idd"]; Aca si se justificaría el uso de doble comilla (solo un ejemplo, claro...)-
  */
    
$result=mysql_query(" SELECT * FROM `cubos` WHERE ID = '$id' ",$link); 
    
    while(
$row mysql_fetch_assoc($result)) { 
    
    
/*$id2 = $row["ID"]; 
    $cemail = $row["ce-mail"]; 
    $cliente = $row["cliente"]; 
    */
    
    
echo $row['ID'].'</br>';
    echo 
$row['ce-mail'].'</br>';
    echo 
$row['cliente'];
    } 
        
mysql_free_result($result); //Esto la verdad que no lo veo muy necesario con una consulta tan pequeña ;)
        
mysql_close($link); 
  #5 (permalink)  
Antiguo 15/04/2011, 20:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Clausula where

Cita:
Iniciado por ivanoide_3 Ver Mensaje
No me sale nada [...]
debes imprimir mysql_error(), después de la linea que te da error para saber cual es... si lo haces antes, es obvio que no saldrá nada...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 15/04/2011, 20:31
 
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Clausula where

Conseguido, gracias, solo una cosa más, no me iba sin esto:

$link=Conectarse(); a pesar de que quite las variables $link que habia usandose... me dijiste que asi ahorraba lineas, pero no soy capaz de hacerlo funcionar sin eso, como tengo que hacer?

Por cierto muchas gracias por solucionarme el problema y mas que nada por explicarme cosas como lo de mysql_fetch_assoc, porque muchas veces leo ahora hay que hacer tal despues cual, pero no entiendo muy bien al menos tu me has explicado cuando usar cada cosasa ;)
  #7 (permalink)  
Antiguo 15/04/2011, 20:35
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 11 meses
Puntos: 21
Respuesta: Clausula where

De nada, lo que necesites... :P Para eso estamos...

Si usas un connect.php como el que puse ahí arriba de deberías tener problemas... Ese es el que yo usaba y andaba perfecto (notarás que olvide borrar una línea jaja)... Si querés pone el código como te quedo y vemos cual es el problema ;)
  #8 (permalink)  
Antiguo 15/04/2011, 21:30
 
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Clausula where

Ya lo resolvi, estoy usando tu connect, gracias amigo ;), oye una solda duda mas:

Como puedo obtener el ultimo ID de mi tabla?

Me explico, imaginemos que tengo 10 registros en la base de datos "basededatos" y tiene 1 unico campo "id", y tiene
id
1
2
3... asi hasta 10, y quiero con una consulta obtener el ultimo (10 en este caso), como haria eso? esque no conozco ninguna clausula de mysql para hacer eso.
  #9 (permalink)  
Antiguo 15/04/2011, 21:35
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Clausula where

Ordenalos en orden descendiente.. Es decir, de mayor a menor
Código PHP:
$result mysql_query("SELECT * from cubos WHERE ID = '$id' ORDER BY id DESC"$link);
$res mysql_fetch_assoc($result); //Aqui el primer 'contenido' del array es el ultimo registro 
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #10 (permalink)  
Antiguo 15/04/2011, 21:59
 
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Clausula where

Vale, muchisimas gracias a todos!
  #11 (permalink)  
Antiguo 15/04/2011, 23:15
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 11 meses
Puntos: 21
Respuesta: Clausula where

También, si queres el ultimo id solamente, podes hacer lo siguiente:

Código PHP:
$result mysql_query("SELECT * from cubos WHERE ID = '$id' ORDER BY id DESC LIMIT 0,1"$link); 
Suerte ;)
__________________
Si te ayude, el karma nunca sobra ;)

Etiquetas: clausula
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 12:58.