2011-01-27 36 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是因为您的查询语法错误。

我不知道为什么它写的接受答案的人,也许是一个更新,也许他有一个语法错误,是如此自信,他没有检查它是否可能永远是

下面是评论别人纠正他的语法做:

所以,接受的答案是错误的“{在第一行之前添加其他)”