0

以下の機能に非常に不満があります。データベース内のフラグは更新されません。引用符の間に1と0を入れてみましたが、そうではありません。データベースでフィールドを小整数に設定しています。私が間違っていることがわかりますか?エントリはありますが、1は0に更新されていません。

function postValue(){
    global $customerID;
    $query="SELECT flag FROM welcomecall WHERE customerID= '$customerID'";
    echo $query;
   $result = mysql_query($query) or die('Error in the query: ' . mysql_error());
   while ($row = mysql_fetch_assoc($result)) {
    echo "The customer flag is ". $row["flag"];  
    }

    if ($row['flag']=='0'){
    $query="UPDATE welcomecall SET flag='1' WHERE customerID='$customerID'";            
   $result = mysql_query($query) or die('Error in the query: ' . mysql_error());
   }
   else if($row['flag']=='1'){
    $query="UPDATE welcomecall SET flag='0' WHERE customerID='$customerID'";            
   $result = mysql_query($query) or die('Error in the query: ' . mysql_error());
   }
}
4

2 に答える 2

2

式が終了すると、残りwhileはなくなります。$row

while ($row = mysql_fetch_assoc($result)) {

したがって、これは当てはまりません。

if ($row['flag']=='0'){

ifステートメントをwhileループ内に移動することを検討してください。

于 2013-02-18T21:10:41.010 に答える
0

ループの内側に属するループの外側のロジックを使用しているようです。

function postValue(){
    global $customerID;

    $query="SELECT flag FROM welcomecall WHERE customerID= '$customerID'";
    echo $query;

    $result = mysql_query($query) or die('Error in the query: ' . mysql_error());
    while ($row = mysql_fetch_assoc($result)) {
        echo "The customer flag is ". $row["flag"];  

        // Moved
        if ($row['flag']=='0'){
            $query="UPDATE welcomecall SET flag='1' WHERE customerID='$customerID'";            
            $result = mysql_query($query) or die('Error in the query: ' . mysql_error());
        }
        else if($row['flag']=='1'){
            $query="UPDATE welcomecall SET flag='0' WHERE customerID='$customerID'";            
            $result = mysql_query($query) or die('Error in the query: ' . mysql_error());
        }
    }
}
于 2013-02-18T21:10:51.920 に答える