2011-01-27 3 views
5

は、私はPHPの変数を持っている:$fooチェック

私のMySQLのテーブルが dataと呼ば

次の構造を有する:

id var header 

1  zj3  http://google.com 
私は $fooかどうかを確認したいと思います

var内のすべての準備ができている 行。

それは私がheader(「http://google.com」)をエコーし​​たい場合には、あなたがこれに近づくだろうか

ご協力いただきありがとうございます。明確化が必要かどうか尋ねてください。

+0

したがって、値がテーブルにない場合は、行を戻したいですか?よくわかりません。 –

+0

@Rocket巨大な誤字は申し訳ありません!私の質問を編集しました。ありがとう。 – Trufa

+0

ありがとう。それは今意味がある: - P –

答えて

9

あなたのクエリは次のようになります。

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

これは$foovar値を持つすべてのヘッダを返します。

$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

それを空と比較すると、その値が存在するかどうかわかりますか?それが何か価値がない場合、それは何を返すでしょうか? – Trufa

+0

何も見つからなければ何も返しません( '$ query'は' FALSE'になります)。 –

+0

@Trufa:「それを空と比較すれば、価値があるかどうかわかります」とはどういう意味ですか? –

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

EDITに接続するには:あなたが$foo一致いかなるdataのフィールドかどうかを尋ねる、または$foo=some_field場合しているあなたの編集に基づいて

+0

これは意味があります、私はそれを試してみましょう、迅速な応答のおかげで! – Trufa

+0

"データベースが選択されていません"というメッセージが表示されるのはなぜですか? – Trufa

+0

@Trufa:最初にmysql_connectを使ってDBに接続していることを確認する必要があります。 –

1

を平等文を変更しましたか?あなたが望むならここに$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列と一致する場合、ヘッダー列をエコーし​​たいと思います。 – Trufa

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を返します。

を返す比較のための唯一の方法は、クエリに構文エラーがあるためです。それが受け入れられた答えを書いた人のために働いた理由を私は知らない

、多分それは、更新ですまたは多分彼は構文エラーを持っていたし、それが今までTRUEことができれば、彼は確認しなかったことをとても自信があった

だから、受け入れ答えが間違っている「最初の行に{前に別の追加)」

は、ここで彼の構文を修正するために作られたコメントの誰かです!