PHP&;MySQL-如果内容不在一个表中,请检查另一个表

PHP&;MySQL-如果内容不在一个表中,请检查另一个表,php,mysql,cloud9,Php,Mysql,Cloud9,我试图设置if/else的大小写,以查看一个值是否在一个表中,然后显示所述值,如果它不在一个表中,则检查另一个表 我在Cloud9中使用PHP和MySQL。电子邮件是从未显示的表单中获取的 使用正确的电子邮件搜索表“Customer”会显示密码_enc,但如果在Customer表中找不到该电子邮件,并且它会搜索“Company”表,则不会显示任何内容。我检查了PHPMyAdmin,并且电子邮件存在且有效 我也检查了我的表格,“email”和“rep_email”是有效的 有没有更简单的方法来实现

我试图设置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";
}