PHP&;MySQL-如果内容不在一个表中,请检查另一个表
我试图设置if/else的大小写,以查看一个值是否在一个表中,然后显示所述值,如果它不在一个表中,则检查另一个表 我在Cloud9中使用PHP和MySQL。电子邮件是从未显示的表单中获取的 使用正确的电子邮件搜索表“Customer”会显示密码_enc,但如果在Customer表中找不到该电子邮件,并且它会搜索“Company”表,则不会显示任何内容。我检查了PHPMyAdmin,并且电子邮件存在且有效 我也检查了我的表格,“email”和“rep_email”是有效的 有没有更简单的方法来实现这一点,或者我当前的代码需要调整?谢谢你的帮助PHP&;MySQL-如果内容不在一个表中,请检查另一个表,php,mysql,cloud9,Php,Mysql,Cloud9,我试图设置if/else的大小写,以查看一个值是否在一个表中,然后显示所述值,如果它不在一个表中,则检查另一个表 我在Cloud9中使用PHP和MySQL。电子邮件是从未显示的表单中获取的 使用正确的电子邮件搜索表“Customer”会显示密码_enc,但如果在Customer表中找不到该电子邮件,并且它会搜索“Company”表,则不会显示任何内容。我检查了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;
您应该使用
num\u rows
从结果集中检索行数
$email = !empty($_POST ['email']) ? $_POST['email'] : "";
$email2 = $email;
$query = "SELECT * FROM Customer WHERE email = '$email'";
$result = $db->query($query);
if ($result->num_rows > 0){ //check if results is bigger then 0
$row = $result->fetch_assoc(); /* These lines query the dataabse when user enters email */
$password_enc = $row['password_enc'];
} else {
$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;
为了成功地选择、显示、描述或解释查询,mysqli_query()将返回一个mysqli_结果对象 因此,您不必检查响应,实际上可以像这样检查返回的行数
$query = "SELECT * FROM Customer WHERE email = '$email'";
$result = $db->query($query);
if ($result->num_rows > 0){
$row = $result->fetch_assoc(); /* These lines query the dataabse when user enters email */
$password_enc = $row['password_enc'];
}else{
$query2 = "SELECT * FROM Company WHERE rep_email = '$email2'";
$result2 = $db->query($query2);
if($result2->num_rows>0){
$row2 = $result2->fetch_assoc(); /* These lines query the dataabse when user enters email */
$password_enc = $row2['password_enc'];
}
}
if(isset($password_enc)){
echo "password_enc: ".$password_enc;
}else{
echo "Password Not Available";
}
阻止SQL注入我正在阻止SQL注入。我只是没有把它包括在内,因为它超出了问题的范围。
if($result){}elseif(!$result){}
这很聪明。告诉我们,为什么elseif
检查?您没有检查$result2
-如果$query2
失败怎么办?如果电子邮件不在公司
表中怎么办?你使用调试器吗?我会说,在你的数据模型级别上解决这个问题。如果客户和公司都应该有可以登录的帐户,那么为什么不首先将与之相关的信息放在帐户表中?此时无需再搜索两个表。(客户和公司之间不同的其他信息/字段仍应分别放入各自的专用表中。)我不确定$result是如何工作的。我确实查阅了手册,但我发现它太令人困惑了。谢谢你的帮助
$query = "SELECT * FROM Customer WHERE email = '$email'";
$result = $db->query($query);
if ($result->num_rows > 0){
$row = $result->fetch_assoc(); /* These lines query the dataabse when user enters email */
$password_enc = $row['password_enc'];
}else{
$query2 = "SELECT * FROM Company WHERE rep_email = '$email2'";
$result2 = $db->query($query2);
if($result2->num_rows>0){
$row2 = $result2->fetch_assoc(); /* These lines query the dataabse when user enters email */
$password_enc = $row2['password_enc'];
}
}
if(isset($password_enc)){
echo "password_enc: ".$password_enc;
}else{
echo "Password Not Available";
}