我有一個PHP變量:$foo
檢查值存在在MySQL行
我的MySQL表稱爲data
具有以下結構:
id var header
1 zj3 http://google.com
我想檢查是否$foo
是所有準備在var
行。
如果是我想呼應header
(「http://google.com」)
你會如何處理這個?
在此先感謝,請詢問是否需要澄清!
我有一個PHP變量:$foo
檢查值存在在MySQL行
我的MySQL表稱爲data
具有以下結構:
id var header
1 zj3 http://google.com
我想檢查是否$foo
是所有準備在var
行。
如果是我想呼應header
(「http://google.com」)
你會如何處理這個?
在此先感謝,請詢問是否需要澄清!
您的查詢應該是:
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);
}
首先連接到該數據庫
$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'];
}
}
編輯:改根據您的修改
平等聲明你要問,如果$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列匹配,您似乎要回顯標題列。以上不會爲此工作。
你只是想知道$ var的值是否在該列(任何行)的任何位置?
SELECT COUNT(id) FROM data WHERE var = ?;
結果將是字段var包含$ var的值的行數。
這並不難,如果我理解正確,那麼這應該會對你有所幫助。
// 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;
}
這是所有「存在」問題的模板。
這是迄今爲止唯一真正爲我工作的東西,並且不被棄用。
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是因爲您的查詢語法錯誤。
我不知道爲什麼它寫的接受答案的人,也許是一個更新,也許他有一個語法錯誤,是如此自信,他沒有檢查它是否可能永遠是真 。
下面是評論別人糾正他的語法做:
所以,接受的答案是錯誤的「{在第一行之前添加其他)」
!
所以,如果一個值不在表中,你想要返回一行?我很困惑。 – 2011-01-27 20:16:09
@火箭對不起,大錯字!編輯我的問題。 – Trufa 2011-01-27 20:18:56
謝謝。現在有道理:-P – 2011-01-27 20:19:35