我编写了一个SQL例程,用于将用户的输入与表中的现有值进行比较。如果该值存在,则输入旁边会出现绿色复选标记。如果没有,则出现红色x。我的SQL语句如下:
$check = $con->prepare("SELECT count(*) FROM emaillist");
$check->execute();
$result = $check->fetchColumn(); //Get no. of columns
$check = $con->prepare("SELECT Username FROM emaillist WHERE Username =
'$Name' AND '$Name' <> '' ");
$check->execute();
$result = $check->fetchColumn(); //Get exact column
if(!$result) {
show red x } else { show green check }
只要有输入,这就可以正常工作。输入不匹配时出现红色x,出现绿色检查时出现;但是,如果该字段留空,我不希望显示任何。现在,如果字段为空或为空,则会出现红色x。使用IS NOT NULL也不起作用。我错过了什么?
答案 0 :(得分:2)
您只有两个分支:显示红色x并显示绿色检查。你需要第三个,例如
if (!$Name) {
//show nothing
}
else if (!$result) {
//show red x
}
else {
//show green check
}
在一个不相关的说明中,您使用PDO
非常棒,但是您需要正确地对查询进行参数化以确保注入安全。
答案 1 :(得分:1)
尝试重写这样的逻辑:
if ($Name != ''){
$check = $con->prepare("SELECT Username FROM emaillist WHERE Username = '$Name'");
$check->execute();
$result = $check->fetchColumn(); //Get exact column
if(!$result) {
// show red x
} else {
// show green check
}
}
else {
// show red here or some other input error message
}