2011-01-27 40 views
5

我有一個PHP變量:$foo檢查值存在在MySQL行

我的MySQL表稱爲data具有以下結構:

id var header 

1  zj3  http://google.com 

我想檢查是否$foo是所有準備在var行。

如果是我想呼應header(「http://google.com」)

你會如何處理這個?

在此先感謝,請詢問是否需要澄清!

+0

所以,如果一個值不在表中,你想要返回一行?我很困惑。 – 2011-01-27 20:16:09

+0

@火箭對不起,大錯字!編輯我的問題。 – Trufa 2011-01-27 20:18:56

+0

謝謝。現在有道理:-P – 2011-01-27 20:19:35

回答

9

您的查詢應該是:

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

這將返回所有的頭與$foo一個var值。

$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); 
} 
1

首先連接到該數據庫

$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']; 
    } 
} 

編輯:改根據您的修改

1

平等聲明你要問,如果$foo比賽data字段的任何,或者如果$foo=some_field?這裏如果你想要$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:因爲您已經編輯了您的問題,所以如果您的搜索值與您的var列匹配,您似乎要回顯標題列。以上不會爲此工作。

0

你只是想知道$ var的值是否在該列(任何行)的任何位置?

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

結果將是字段var包含$ var的值的行數。

1

這並不難,如果我理解正確,那麼這應該會對你有所幫助。

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

這是所有「存在」問題的模板。

這是迄今爲止唯一真正爲我工作的東西,並且不被棄用。

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

警告!

即使變量不存在$查詢mysqli_query之間的比較()將始終返回TRUE

唯一的方法 - 發生在我身上 - 比較返回FALSE是因爲您的查詢語法錯誤。

我不知道爲什麼它寫的接受答案的人,也許是一個更新,也許他有一個語法錯誤,是如此自信,他沒有檢查它是否可能永遠是

下面是評論別人糾正他的語法做:

所以,接受的答案是錯誤的「{在第一行之前添加其他)」