0

ここに嘘をつくつもりはありませんが、これで頭がいっぱいになるかもしれませんが、何か助けていただければ幸いです。

したがって、プロモーションコードを受け取り、それがDBに存在することを検証するフォームがありますが、同時に電子メールフィールドがnullかどうかを確認しています。私は以下のコードを持っていますが、そのプロモーションコードとそのフィールドに電子メールアドレスを含むレコードが DB にあるため、エラーがスローされない理由がわかりません。

ここで小さな何かが欠けているような気がします。それとも、かなり離れている可能性があります。email is null と email = '' を試しました

$dupesql = "SELECT * FROM formdata WHERE (promoCode = '$varPromo' AND email = null)";

$duperaw = $mysqli->query($dupesql);


if($duperaw->num_rows > 0) {
$dupe .= "$varPromo has already been used on $varDate \n";
} 
4

1 に答える 1

1

false と評価される, is との比較でNULLは、いずれかのオペランドが になるかどうかが事前にわからない場合はorを使用できますが、両方がである場合はそれが必要です。NULLIS NULL<=>NULLtrueNULL

mysql> SELECT NULL = NULL;
+-------------+
| NULL = NULL |
+-------------+
|        NULL |
+-------------+
1 row in set (0.00 sec)

mysql> SELECT NULL IS  NULL;
+---------------+
| NULL IS  NULL |
+---------------+
|             1 |
+---------------+
1 row in set (0.00 sec)

mysql> SELECT NULL <=> NULL;
+---------------+
| NULL <=> NULL |
+---------------+
|             1 |
+---------------+
1 row in set (0.03 sec)
于 2013-10-17T18:54:36.460 に答える