2017-03-18 3 views
0

私は非常にうんざりな状況に陥りました。私は何が起こっているのか把握できません。"fetch_assoc"の値がif-statement、PHPで変わる?

if (isset($matched_row['id'])) 

へ:私が代わりに(他に何も変更せずに)行を変更した場合

$conn->query("UPDATE teachers SET active=1 WHERE id=".$next_teacher_id); 

$list_of_arr=$conn->query("SELECT * FROM teachers WHERE id>=".$next_teacher_id); 
$k = $list_of_arr->fetch_assoc(); 
    $choice_array=unserialize($k['arr']); 
    foreach ($choice_array as $j) { 
     $matched_query=$conn->query("SELECT * FROM students WHERE taken_by='' AND name LIKE '%".$j."%'"); 
     $matched_row=$matched_query->fetch_assoc(); 
     if (isset($matched_row['id'])) { 
      $qu="UPDATE students SET taken_by='".$k['name']."' WHERE id=".$matched_row['id']; 
      echo($qu); 
      $conn->query($qu); 
      break; 
     } 
    $k=$list_of_arr->fetch_assoc(); 

} 

これは、しかしUPDATE students SET taken_by='' WHERE id=19

をエコーし​​ます:

私は、次のコードを持っている

if (isset($k['name'])) 

私は今のエコーを取得:

if(true) 

私は出力として得る::私はと言えば、対照実験として

UPDATE students SET taken_by='John Smith' WHERE id= 

UPDATE students SET taken_by='John Smith' WHERE id= 

ように、2つの異なる方法私は私の出力を実際に切り替えるかどうか、そして両方をクエリ変数に入れることはできません。ここで何が起こっているのですか?どんな助けでも大歓迎です。

+0

WHERE id = '"。$ next_teacher_id。"' ' –

+0

これはちょうど私にこれを与えます: 'UPDATE students SET taken_by =' John Smith 'WHERE id =' ''出力として。どういうわけか、値の1つがnullになっているようです。しかし、私は2つの変数が互いにどのように影響しているかは分かりません。 – rb612

+0

あなたは間違った構文でクエリを書いています。 –

答えて

1

は、これであなたのコードを置き換えます

$conn->query("UPDATE teachers SET active=1 WHERE id='".$next_teacher_id."'); 

$list_of_arr=$conn->query("SELECT * FROM teachers WHERE id>='".$next_teacher_id."'); 
$k = $list_of_arr->fetch_assoc(); 
    $choice_array=unserialize($k['arr']); 
    foreach ($choice_array as $j) { 
     $matched_query=$conn->query("SELECT * FROM students WHERE taken_by='' AND name LIKE '%".$j."%'"); 
     $matched_row=$matched_query->fetch_assoc(); 
     if (isset($matched_row['id'])) { 
      $qu="UPDATE students SET taken_by='".$k['name']."' WHERE id='".$matched_row['id']."'"; 
      echo $qu; 
      $conn->query($qu); 
      break; 
     } 
    $k=$list_of_arr->fetch_assoc(); 

} 
+0

ありがとうあなたの答え、Sweta。実際には解決策ではないことに気付きましたが、文法が正しくなるように助けてくれたことに感謝します。 – rb612

0

は、私が実際に最終的に解決策を考え出すでした。本質的にそれはforeachループだったので、私は間違って私の括弧を間違って配置したので、fetch_assoc()foreachループ内にあるはずでした。 if-statementは変数を変更していませんでした。つまり、foreachループが反復処理されていて、条件が真であるときにのみステートメントがエコーされたため、ステートメントを変更すると出力が変更されました。ブラケットの下のfetch_assoc()行を移動すると問題が解決しました。

関連する問題