PHP如果没有像我想的那样工作

时间:2013-10-17 20:41:48

标签: php mysqli

好吧,我非常困在这里,我可能会看到这完全错误(仍然是一种新手)或超级近距离只是缺少一些我无法说的小事。

在底部,您将找到我的代码,其中包含If ElseIf Else语句。我只是不能做我想要的。所以我希望有人能指导我朝着正确的方向前进。

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

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

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

        $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();
        }

1 个答案:

答案 0 :(得分: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
    }
}