如果在循环内使用ELSE,则更新MYSQL数据行

时间:2019-02-12 15:21:45

标签: php mysql

我正在尝试使用户发送一封电子邮件,该电子邮件尚未被他使用以下代码引用。但是,即使MySQL数据行中已经存在相同的电子邮件,否则else语句也会将电子邮件更新为数据。

if(isset($row)){

        if (array_key_exists("email", $_POST)){

                $query = "SELECT id FROM users WHERE email = '".mysqli_real_escape_string($link,$_POST['email'])."' LIMIT 1";

                $ans = mysqli_query($link, $query);

                if(mysqli_num_rows($ans) > 0){

                $nofriend = $_POST['email']." is already registered.";
                }
                else{
                    $referredemails = $row["rfremails"];
                    $array = explode(",", $referredemails);
                    print_r($array);

                    for($i = 0; $i < sizeof($array); $i++){
                    if($array[$i] == $_POST["email"]){

                    $nofriend = "This e-mail is already referred by you.";


                    }                   
                    else{
                $referdate = getdate();
                $timestamp = "$referdate[mday] $referdate[month] $referdate[year]";
                $opngems = $row["gems"];
                $query = "UPDATE users SET rfremails = '".$referredemails.",".$_POST["email"]."', gems = '".$opngems."+1-".$timestamp."-".$_POST["email"]."' WHERE id = '".mysqli_real_escape_string($link,$_SESSION['id'])."' LIMIT 1";

                mysqli_query($link,$query);

                header("Location: showupdate.php");
                }
                }
                }
                }
                }

1 个答案:

答案 0 :(得分:0)

这是由于for循环中的条件引起的

for($i = 0; $i < sizeof($array); $i++){
    if($array[$i] == $_POST["email"]){
        //stuff
    } else {
        //....$query = "UPDATE users SET rfremails =...
    }
}

当用户引用了一封以上电子邮件时,此条件将被评估为false,从而将处理其他代码段,从而导致数据库中的更新。

在这种情况下使用帮助变量是明智的。例如:

$noFriend = false;

for ($i = 0; $i < sizeof($array); $i++) {
     if ($array[$i] == $_POST["email"]) {
         $noFriend = true;
...
}
if ($noFriend === false) {
    //update
}

当您第一次发现相同的引用电子邮件时,还可以使用 break 语句来加快处理速度。