如果PHP不能像我想的那样工作的话
好吧,我被困在这里了,我可能是看错了(还是个新手),或者是太接近了,只是错过了一些我说不出来的小东西 在这里的底部,您可以找到带有If-ElseIf-Else语句的代码。我就是不能做我想做的事。所以我希望有人能帮我指引正确的方向 在上,它检查以确保输入的promocode位于数据库中并且该部件正常工作 在elseif上,我希望它通过数据库查找促销代码,并确认没有与该促销代码关联的电子邮件地址。下面的方式是,当该促销代码中有电子邮件地址时,查询中不为空,但当该促销代码没有任何内容时,它仍然表示有,并给出了今天的提交数据,但我可以保证数据库中没有任何内容 这就是我的问题所在,我是否完全错了,有没有更好的方法来完成我在这里要做的事情?还是我忽略了一些小事如果PHP不能像我想的那样工作的话,php,mysqli,Php,Mysqli,好吧,我被困在这里了,我可能是看错了(还是个新手),或者是太接近了,只是错过了一些我说不出来的小东西 在这里的底部,您可以找到带有If-ElseIf-Else语句的代码。我就是不能做我想做的事。所以我希望有人能帮我指引正确的方向 在上,它检查以确保输入的promocode位于数据库中并且该部件正常工作 在elseif上,我希望它通过数据库查找促销代码,并确认没有与该促销代码关联的电子邮件地址。下面的方式是,当该促销代码中有电子邮件地址时,查询中不为空,但当该促销代码没有任何内容时,它仍然表示有,
$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();
}
$promosql=“从formdata中选择*,其中(promoCode='$varPromo')”;
$promoraw=$mysqli->query($promosql);
$dupesql=“从formdata中选择*,其中(promoCode='$varPromo'且电子邮件不为空)”;
$duperaw=$mysqli->query($dupesql);
如果($promoraw->num\u行1){
//echo($varName已存在于$varAddress\n)中;
$promo.=“$VARPOMO不是有效的促销代码\n”;
}
elseif($duperaw->num_rows>0){
//echo($varName已存在于$varAddress\n)中;
$dupe.=“$VARPOMO已在$varDate上使用\n”;
}
否则{
$sql=“插入formdata(促销代码、姓名、电子邮件、地址、城市、州、邮政编码、提交日期)值(“”)。
PrepSQL($varPromo)。“,”。
PrepSQL($varName)。“,”。
PrepSQL($varEmail)。“,”。
PrepSQL($varAddress)。“,”。
PrepSQL($varCity)。“,”。
PrepSQL($varState)。“,”。
PrepSQL($varZip)。“,”。
PrepSQL($varDate)。”;
$mysqli->query($sql);
标题(“location:index.php?success=1”);
退出();
}
尝试此查询:
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
}
}
使用参数化查询而不是字符串连接。行
if($promraw->num\u rows 1)
应该是if($promraw->num\u rows!=1)
。行elseif($duperaw->num_rows>0)
应该是else如果($duperaw->num_rows>0)
@dispositionrage实际上,elseif是正确的。如果你使用mysqli,那PrepSQL
funtion在那里做什么?你为什么不使用事先准备好的陈述呢?@markus每天都在学习新的东西。