2017-06-24 7 views
2

問題があります。 DBがPHPを使用して更新されると内部ループから外に出る必要がありますが、私の場合はこのようには起こりません。私は以下のコードを説明しています。 PHPとMysqlを使用してループから抜けることができません

for ($i=0; $i < count($result); $i++) { 
    for ($j=0; $j < 4; $j++) { 
     $index=$j+1; 
      $up_sql=" file".$index."='".$result[$i]['img']."' "; 
     $sqlget=mysqli_query($connect,"select * from cn_sell_info where file".$index."= '' and sid =".$sid); 
     if(mysqli_num_rows($sqlget) > 0){ 
       $update="update cn_sell_info set ".$up_sql." where sid=".$sid ; 
       $upsql2=mysqli_query($connect,$update); 
       break; 
      } 
    } 
} 

は、ここで私はまだ同じ値がコードどおりcosucative列に更新され break文を入れています。一度テーブルが必要な場合は、 for loopから再度出てくるように更新されます。もう一度 first for loopが実行されます。私を助けてください。

+0

はif文を入力するコードですか? –

+0

はい、条件ごとにifステートメントを入力するコードはtrueです。しかし、ここで私は更新が2回目のループから出て終了する必要があります。そして、最初のforループは再び繰り返します。 – subhra

+0

break put $ j = 4の代わりに –

答えて

1

ブレークには、ブレークアウトするレベルの数を示すオプションのパラメータがあります。 breakbreak 1に相当します。しかし、あなたはbreak 2を実行して、2つのレベルの入れ子を打ち破ることができます。

$i = 0; 
while (++$i) { 
    switch ($i) { 
    case 5: 
     echo "At 5<br />\n"; 
     break 1; /* Exit only the switch. */ 
    case 10: 
     echo "At 10; quitting<br />\n"; 
     break 2; /* Exit the switch and the while. */ 
    default: 
     break; 
    } 
} 
?> 

上記は、良い例を示すhttp://php.net/manual/en/control-structures.break.phpです。

0

breakの代わりに、自然終了条件のループwhileを使用できます。毎回$up_sqlを計算する必要はありません。if(以下のクエリに含まれています)内で1回実行してください。

$num_rows = 0; 
$i = 0; 
while ($i < count($result) && !$num_rows) { 
    $j = 0; 
    while ($j < 4 && !$num_rows) { 
     $index = $j + 1; 
     $sqlget = mysqli_query($connect, "select * from cn_sell_info where file{$index} = '' and sid = {$sid}"); 
     $num_rows = mysqli_num_rows($sqlget) 
     if ($num_rows) { 
      $update = "update cn_sell_info set file{$index}='{$result[$i]['img']}' where sid={$sid}"; 
      $upsql2 = mysqli_query($connect, $update); 
     } 
     $j++; 
    } 
    $i++; 
} 
関連する問題