2016-04-10 25 views
2

Eğer ifadeler varsa buraya baktım. Birkaç şey buldum ama uygun ifade formülünü bulmakta zorlanıyorum. uid alan rct_app_id alanını eşleşirse onlarEğer uygun bir formül

uymuyorsa

aşağıdaki 2 alanlarda

table 1 
rct_app_id 

table 2 
uid 

ile veritabanında 2 tablolar şimdi

echo "Green Light"; 

bunu istiyorum

echo "No Go" 

bu benim formül

olduğunu
<?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

Eğer bu satırda ($ rct_app_id == 'uid') {''uid' nedir? Table2'nin kullanıcı kimliğinin oturum değeri mi yoksa alan değeri mi? – webGautam

cevap

1

Bunu deneyin. ama insanlar tarafından bitlerin ve parçaların neler olduğunu anlamasını zorlaştırır ve size yardımcı olmak zorlaşır.

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

İki satıra ihtiyacınız vardır. $ sonuç, veritabanından alınan sonuçlara sahiptir, bu nedenle rct_app_id verilerinin kaynağıdır. Ardından, karşılaştırmayı yaptığınızda, iki değişkeni karşılaştırmanız gerekir.

$rct_app_id = $result['rct_app_id']; 

    if ($rct_app_id == $user_id) { 

Elde ettiğiniz şekilde bir diziyi bir dizeyle karşılaştırırsınız.

Bunu yaptığınızda:

$rct_app_id = ['rct_app_id']; 

sözdizimi hatalı olmasına rağmen Aslında, bir eleman içeren bir diziye denk değişken $ rct_app_id belirliyoruz. Bunun yerine, veritabanından döndürülen dizinin bir öğesi almanız gerekir. Bu, düzgün çalışan ve bir dizi döndüren query() adında bir işleviniz olduğunu varsayar.

Bunun yerine, şöyle dizinin bir elemanına değişken eşit ayarlamak gerekir:

$rct_app_id = $result['rct_app_id']; 

Sonra, böyle bir karşılaştırma yaptığınızda:

if ($rct_app_id == 'uid') { 

diyorsun ki $ rct_app_id değişkeni, string uid değerine eşitse, o değil. Değişkenler her zaman php ile $ ile başlar, dizeler kote edilir. Daha önce komut set değişken (OTURUM itibaren) $ user_id, bu yüzden o karşılaştırmak gerekir:

if ($rct_app_id == $user_id) 
+0

larsAnders hata veriyor Dizisi mysqli_result nesnesi –

+0

Ah olarak kullanamazsınız, bu yüzden $ sonuç bir dizi değil, bir nesnedir.Bunun dışında bir dizi elde etmek için nesnenin yöntemlerini kullanmanız gerekir. Bunun gibi: '$ result = query ($ sql); $ res_array = $ sonuç-> fetch_assoc(); $ rct_app_id = $ res_array ['rct_app_id']; ' – larsAnders

+0

larsAnders hala aynı hata –

0

GÜNCELLEME: Eğer sql lib belirttiğiniz, ben çalışmak için aşağıda cevabını kaydetmiştiniz güncellenmiş cevabınız.

Kitaplığı belirtmediğiniz için, yanıtı ve kodu mysql kullandığınız varsayımıyla yapıyorum. Tüm sorgular ve döndürme işlevleri benzer sözdizimini kullanıyor olsa da, örneğin: 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

için çalışacaktır. Halihazırda bir değişkeni bir dizgeyle karşılaştıran if ifadesini düzeltmeniz gerekiyor. – larsAnders

+0

while ifadesine bir göz atın. Değişken değerini oraya atayım, bu yüzden $ rct_app_id değerini 'uid' ile mükemmel bir şekilde okunan –

+0

ile karşılaştırıyoruz. Yani veritabanından çıkan kimlik numarası 'uid' dizesi olacak. Gerçekten mi? – larsAnders