0

好的,我被困在这里,我可能会认为这是完全错误的(仍然是新手)或超级接近只是错过了一些我无法分辨的小东西。

在这里的底部,您会发现我的代码带有 If ElseIf Else 语句。我就是不能做我想做的事。所以我希望有人可以帮助我朝着正确的方向前进。

在如果它检查以确保输入的促销代码在数据库中并且该部分有效。

在 elseif 我希望它查看数据库并找到促销代码并确认没有与该促销代码关联的电子邮件地址。它在查询中使用 IS NOT NULL 的方式适用于当该促销代码中有一个电子邮件地址但当该促销代码没有任何内容时它仍然说有并提供今天的提交数据但我可以确保数据库中没有任何内容。

这就是我的问题所在,我这样做完全错了有没有更好的方法来完成我在这里尝试做的事情?还是我只是忽略了一些小事?

        $promosql = "SELECT * FROM formdata WHERE (promoCode = '$varPromo')";
        $promoraw = $mysqli->query($promosql);

        $dupesql = "SELECT * FROM formdata WHERE (promoCode = '$varPromo' AND email IS NOT NULL)";
        $duperaw = $mysqli->query($dupesql);

        if($promoraw->num_rows <> 1) {
            //echo ("$varName already exists in $varAddress \n");
            $promo .= "$varPromo is not a valid promocode \n";
        } 
        elseif($duperaw->num_rows > 0) {
            //echo ("$varName already exists in $varAddress \n");
            $dupe .= "$varPromo has already been used on $varDate \n";
        } 
        else {
        $sql = "INSERT INTO formdata (promoCode, name, email, address, city, state, zip, submitDate) VALUES (".
                        PrepSQL($varPromo) . ", " .
                        PrepSQL($varName) . ", " .
                        PrepSQL($varEmail) . ", " .
                        PrepSQL($varAddress) . ", " .
                        PrepSQL($varCity) . ", " .
                        PrepSQL($varState) . ", " .
                        PrepSQL($varZip) . ", " .
                        PrepSQL($varDate) . ")";
        $mysqli->query($sql);

        header("location: index.php?success=1");
        exit();
        }
4

1 回答 1

0

试试这个查询:

SELECT email IS NULL or email = '' has_email FROM formdata WHERE promoCode = '$varPromo'

然后你的 PHP 可以做:

if ($promoraw->nul_rows == 0) {
    // Not a valid promo code
} else {
    $row = $promoraw->fetch_assoc();
    if ($row['has_email']) {
        // Promo code has been used
    } else {
        // Insert into table
    }
}
于 2013-10-17T21:10:13.680 回答