【发布时间】:2018-06-15 12:01:19
【问题描述】:
我正在尝试设置 if/else 情况以查看值是否在一个表中,然后显示所述值,如果不在一个表中,则检查另一个表。
我在 Cloud 9 中使用 PHP 和 MySQL。电子邮件是从未显示的表单中获取的。
使用正确的电子邮件搜索“客户”表会显示 password_enc,但如果在客户表中未找到该电子邮件,并且搜索“公司”表,则不会显示任何内容。我检查了 PHPMyAdmin 并且电子邮件存在且有效
我也检查了我的表格,“email”和“rep_email”是有效的。
有没有更简单的方法可以做到这一点,或者我当前的代码是否需要调整?感谢您的帮助。
$email = !empty($_POST ['email']) ? $_POST['email'] : "";
$email2 = $email;
$query = "SELECT * FROM Customer WHERE email = '$email'";
$result = $db->query($query);
if ($result){
$row = $result->fetch_assoc(); /* These lines query the dataabse when user enters email */
$password_enc = $row['password_enc'];
}
elseif(!$result){
$query2 = "SELECT * FROM Company WHERE rep_email = '$email2'";
$result2 = $db->query($query2);
$row2 = $result2->fetch_assoc(); /* These lines query the dataabse when user enters email */
$password_enc = $row2['password_enc'];
}
echo "password_enc: ".$password_enc;
【问题讨论】:
-
我正在阻止 SQL 注入。我只是没有包括它,因为它超出了问题的范围。
-
if ($result){} elseif(!$result){}这很聪明。告诉我们,为什么要检查elseif? -
您不检查
$result2- 如果$query2失败怎么办?如果电子邮件不在Company表中怎么办?你使用调试器吗? -
我想说,在您的数据模型级别上解决这个问题。如果客户和公司都应该拥有可以登录的帐户 - 那么为什么不将与 that 相关的信息放在
account表中呢?此时无需再搜索两个表。 (客户和公司之间不同的其他信息/字段仍应分别放入各自的专用表中。)