2011-01-27 32 views
5

que tienen una variable php: $fooComprobar si existe valor de la fila MySQL

Mi tabla de MySQL llama data tiene la siguiente estructura:

id var header 

1  zj3  http://google.com 

me gustaría comprobar si $foo es todo dispuesto para el var fila.

Si es me gustaría hacer eco header ("http://google.com")

¿Cómo le acercarse a este?

Gracias de antemano, por favor pregunte si necesita alguna aclaración!

+0

Entonces, ¿desea devolver una fila si NO hay un valor en la tabla? Estoy confundido. –

+0

@Rocket ¡Perdón por el GRAN tipeo! Editado mi pregunta. – Trufa

+0

gracias. Eso tiene sentido ahora :-P –

Respuesta

9

Su consulta debe ser:

SELECT `header` FROM `data` WHERE `var` = '$foo' 

Esto devolverá todas las cabeceras con un valor de var$foo.

$db = mysqli_connect('localhost', 'username', 'password', 'database'); 
if($query = mysqli_query($db, "SELECT `header` FROM `data` WHERE `var` = '$foo'")){ 
    while($row = mysqli_fetch_assoc($query)){ 
    echo $row['header']; 
    } 
    mysqli_free_result($query); 
} 
+0

Entonces, si lo comparo con vacío, ¿sabré si el valor existe? ¿Qué devolverá si no encuentra ningún valor? – Trufa

+0

Si no encuentra nada, no devolverá nada ('$ query' será' FALSE'). –

+0

@Trufa: ¿Qué quiere decir con 'Entonces, si lo comparo con vacío, sabré si el valor existe'? –

1

conecte por primera vez a la db

$query = mysql_query("SELECT var, header FROM data WHERE id='1'") or die(mysql_error()); 
while($row = mysql_fetch_assoc($query)){ 
    if($foo == $row['var']){ 
     echo $row['header']; 
    } 
} 

EDITAR: se cambió el comunicado igualdad basada en su edición

+0

Esto tiene sentido, lo intentaré, ¡gracias por la respuesta rápida! – Trufa

+0

Dice: "No se seleccionó ninguna base de datos" ¿por qué podría ser esto? – Trufa

+0

@Trufa: primero debe asegurarse de conectarse a la base de datos usando 'mysql_connect'. –

1

¿Estás preguntando si $foo partidos cualquier de los campos en data, o si $foo=some_field? Aquí para si quiere $foo==var.

$foo='somevalue'; 
$query="SELECT id, var, header FROM `data` WHERE var='$foo'"; 
$result=mysqli_query($query); 
if($result->num_rows==0) 
    $loc= 'http://google.com';//default value for when there is no row that matches $foo 
}else{ 
    $row=$result->fetch_assoc(); //more than one row is useless since the first header('Location: x') command sends the browser to a new page and away from your script. 
    $loc=$row['header']; 

} 
header ("Location: $loc); 
exit; 

ETA: ya ha editado su pregunta, parece que usted quiere hacerse eco de la columna de cabecera si su valor de búsqueda coincide con su columna var. Lo anterior no funcionará para eso.

+0

Sí, esto es correcto, quiero hacerme eco de la columna del encabezado si el valor de búsqueda coincide con su columna var. – Trufa

0

Lo que desea saber si el valor de $ var es cualquier lugar en esa columna (cualquier fila (s))?

SELECT COUNT(id) FROM data WHERE var = ?; 

El resultado será el número de filas para las cuales el campo var contiene el valor de $ var.

1

No es difícil en absoluto, si entiendo correctamente, entonces esto debería ayudarlo.

// Query Variable/Contains you database query information 
$results = $query; 

// Loop through like so if the results are returned as an array 
foreach($results as $result) 
{ 
    if(!$result['var']) 
     echo $result['header']; 
} 

// Loop through like so if the results are returned as an object 
foreach($results as $result) 
{ 
    if(!$result->var) 
     echo $result->header; 
} 
0

Aquí hay una plantilla para todas las preguntas "¿existe?".

Esto es lo único que realmente funcionó para mí hasta ahora y no está en desuso.

if ($query = mysqli_query($link, "SELECT header FROM data WHERE var = '$foo'")) { 

     $header = mysqli_fetch_assoc($query); 

     if ($header) { 

      // The variable with value $foo exists. 
     } 
     else { 

      // The variable with value $foo doesn't exist. 
     } 
    } 
    else { 

     // The query didn't execute for some reason. (Dammit Obama!) 
    } 

ADVERTENCIA!

Incluso si la variable NO EXISTE la comparación entre $ consulta y mysqli_query() siempre devuelve TRUE .

La única forma --que me sucedió-- de que la comparación devuelva FALSE es debido a un error de sintaxis en su consulta.

No sé por qué funcionó para el tipo que escribió la respuesta aceptada, tal vez es una actualización o tal vez tenía un error de sintaxis y estaba tan seguro de que no comprobó si alguna vez podría ser TRUE .

Aquí está el comentario que alguien hizo para corregir la sintaxis:

"Añadir otra) antes de la {en la primera línea"

Por lo tanto, la respuesta aceptada es un error!