2016-04-10 8 views
2

if文についてここで検討しました。私はいくつかのことを見つけましたが、適切なステートメントの式を見つけ出すことに問題があります。Statment適切な式がある場合

私は今、彼らは

と一致しない場合、UIDフィールドが

echo "Green Light"; 

に私はそれをしたいrct_app_idフィールドと一致した場合、次の2つのフィールド

table 1 
rct_app_id 

table 2 
uid 

と、データベース内の2つのテーブルを持っています

echo "No Go" 

これは私の公式です

<?php 

     $user_id = $_SESSION['uid']; 

     $sql = "SELECT * FROM recruits WHERE rct_app_uid = {$user_id}"; 
     $result = query($sql); 

     $rct_app_id = ['rct_app_id']; 

     if ($rct_app_id == 'uid') { 

      echo "Green Light"; 

     } else { 

      echo "No Go"; 
    } 

?> 

function query($query) 
{ 
    global $connection; 
    return mysqli_query($connection, $query); 
} 
+1

この行のif($ rct_app_id == 'uid'){'は何ですか 'uid'ですか?それはセッション値かtable2のUIDのフィールド値ですか? – webGautam

答えて

1

これを試してください。人々がビットとピースで何が起こっているのか把握するのは難しいことを覚えておいてください。それはあなたを助けることをより困難にします。

<?php 

      $user_id = $_SESSION['uid']; 

      $sql = "SELECT * FROM recruits WHERE rct_app_uid = {$user_id}"; 
      $result = query($sql); 

      while(($row = mysqli_fetch_assoc($result))!=false){ 

       $rct_app_id = $row['rct_app_id']; 

      if ($rct_app_id == $user_id) { 

       echo "Green Light"; 

      } else { 

       echo "No Go"; 
     } 

    } 
     }  
    ?> 
1

2行を修正する必要があります。 $ resultはデータベースからの結果を持つので、rct_app_idデータのソースです。次に、比較を行うときに、2つの変数を比較する必要があります。

$rct_app_id = $result['rct_app_id']; 

    if ($rct_app_id == $user_id) { 

あなたが持っている方法では、配列を文字列と比較しています。

あなたが行う場合は、この:

$rct_app_id = ['rct_app_id']; 

構文が間違っていますが、あなたが実際に、一つの要素を持つ配列に等しい変数$ rct_app_idを設定しています。代わりに、データベースから返される配列の要素を1つ取得する必要があります。これは、query()という関数が正しく動作し、配列を返す関数を持っていることを前提としています。

代わりに、私たちはそうのような配列の一つの要素に等しい変数を設定する必要があります。

if ($rct_app_id == 'uid') { 

あなたが言っている:あなたはこのような比較を行う際に、次に

$rct_app_id = $result['rct_app_id']; 

を変数$ rct_app_idが文字列uidと等しい場合、それはそうではありません。変数は常にPHPで$で始まり、文字列は引用されます。以前のスクリプトで設定された変数は、(セッションから)$ user_idはあるので、我々はそれに比較する必要があります:

if ($rct_app_id == $user_id) 
+0

larsAndersエラーを返します。型mysqli_resultのオブジェクトを配列として使用できません。 –

+0

ああ、$ resultはオブジェクトであり配列ではありません。'$ result = query($ sql);このようにオブジェクトの配列を取得するには、オブジェクトのメソッドを使用する必要があります。 $ res_array = $ result-> fetch_assoc(); $ rct_app_id = $ res_array ['rct_app_id']; ' – larsAnders

+0

larsAndersはまだ同じエラー –

0

UPDATE:あなたは私が一緒に仕事するには、以下の答えを編集した、あなたのSQLのlibを指定しましたあなたの更新された答え。

ライブラリを指定していないので、mysqlを使用していると仮定して、回答とコードを編集しています。すべてのクエリとリターン関数は同じ構文を使用しますが、mysql_fetch_assoc()= mysqli_fetch_assoc()、pg_fetch_assoc(postgres)です。

<?php 

     $user_id = $_SESSION['uid']; 

     $sql = "SELECT * FROM recruits WHERE rct_app_uid = {$user_id}"; 
     $result = query($sql); //What type of query runs as just query()? mysql_query would go here if this was mysql. Some Libraries offer this as a function, but since you didn't specify the library, I'm going to change it to mysql_query and proceed as if you're using mysql. 

     //$rct_app_id = ['rct_app_id'];//This will never work. 

     //You need this: 
     while($row=mysqli_fetch_assoc($result)){ 
      //We only expect one result 
      $rct_app_id=$row['rct_app_id']; 
     } 

     if ($rct_app_id == 'uid') { 

      echo "Green Light"; 

     } else { 

      echo "No Go"; 
    } 
function query($query) 
{ 
    global $connection; 
    return mysqli_query($connection, $query); 
} 

?> 
+0

現在、変数を文字列と比較しているif文を修正する必要があります。 – larsAnders

+0

whileステートメントを見てください。私はそこに変数の値を代入していますので、$ rct_app_idの値を 'uid'と完全に合法である –

+0

と比較しています。つまり、データベースから出てくるID番号が文字列 'uid'になります。本当に? – larsAnders

関連する問題