2011-01-27 13 views
5

Ho una variabile PHP: $fooControllare se il valore esiste in MySQL fila

Il mio tavolo MySQL chiamato data ha la seguente struttura:

id var header 

1  zj3  http://google.com 

Vorrei verificare se $foo è tutto pronto in var riga.

Se è vorrei fare eco header ("http://google.com")

Come ti avvicinarsi a questo?

Grazie in anticipo, si prega di chiedere se sono necessari chiarimenti!

+0

Quindi, si desidera restituire una riga se un valore NON è nella tabella? Non ho capito bene. –

+0

@Rocket Ci scusiamo per l'ENORME errore !! Modificato la mia domanda. – Trufa

+0

grazie. Questo ha senso ora :-P –

risposta

9

Vostri criteri dovrebbe essere:

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

Ciò restituirà tutte le intestazioni con un valore di 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

Quindi se lo paragono a vuoto, saprò se il valore esiste? cosa restituirà se non trova alcun valore? – Trufa

+0

Se non trova nulla, non restituirà nulla ('$ query' sarà' FALSE'). –

+0

@Trufa: cosa intendi con 'Quindi se lo paragono a vuoto, saprò se il valore esiste'? –

1

prima connettersi al 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']; 
    } 
} 

EDIT: cambiato dichiarazione uguaglianza base alla tua modifica

+0

Questo ha senso, lo proverò, grazie per la rapida risposta! – Trufa

+0

Dice: "Nessun database selezionato" perché potrebbe essere? – Trufa

+0

@Trufa: è necessario assicurarsi di connettersi al DB usando prima 'mysql_connect'. –

1

stai chiedendo se $foo partite qualsiasi dei campi in data, o se $foo=some_field? Qui per se vuoi $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: visto che hai modificato la tua domanda, sembra che si desidera eco la colonna di intestazione se il valore di ricerca corrisponde la colonna var. Quanto sopra non funzionerà per quello.

+0

Sì, questo è corretto, voglio echo la colonna di intestazione se il valore di ricerca corrisponde alla colonna var. – Trufa

0

Vuoi solo sapere se il valore di $ var è ovunque in quella colonna (qualsiasi riga)?

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

Il risultato sarà il numero di righe per cui il campo var contiene il valore di $ var.

1

Non è affatto difficile, se ho capito bene, questo dovrebbe aiutarti.

// 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

Ecco un modello per tutte le domande "esistono".

Questa è l'unica cosa che ha funzionato per me finora e non è deprecata.

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!) 
    } 

ATTENZIONE!

Anche se la variabile NON ESISTE il confronto tra $ query e mysqli_query() restituisce sempre TRUE .

L'unico modo - cosa che è successo a me-- per il confronto di restituire FALSE è a causa di un errore di sintassi nella query.

Non so perché ha funzionato per il ragazzo che ha scritto la risposta accettata, forse è un aggiornamento o forse ha avuto un errore di sintassi ed era così sicuro che lui non ha controllato se potrebbe mai essere TRUE .

Ecco il commento qualcuno ha fatto per correggere la sua sintassi:

"Aggiungere un'altra) prima del {nella prima riga"

Quindi, la risposta accettata è sbagliata!

Problemi correlati