PHP & amp; MySQL — если содержимое не в одной таблице, проверьте другую

Я пытаюсь установить случай if / else, чтобы увидеть, находится ли значение в одной таблице, а затем отобразить указанное значение, и, если его нет в одной таблице, проверить другую таблицу.

Я работаю с PHP и MySQL в Cloud 9. Письмо получено из формы, которая не отображается.

При поиске в таблице «Клиент» с правильным адресом электронной почты отображается 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;

0

Решение

Для успешных запросов SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query () вернет объект mysqli_result

Php MySQL Руководство

Таким образом, вместо проверки ответа вы можете на самом деле проверить количество возвращаемых строк, как это

$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";
}
0

Другие решения

Вы должны использовать num_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;
1

$email = !empty($_POST ['email']) ? $_POST['email'] : "";

$query = "SELECT result.* FROM( SELECT IFNULL((SELECT password_enc FROM Customer WHERE email = '$email'), (SELECT password_enc FROM Company WHERE rep_email = '$email')) as password_enc) as result";

$result = $db->query($query);
$password_enc = '';

if ($result->num_rows > 0){
$row            = $result->fetch_assoc();
$password_enc   = $row['password_enc'];
}

echo "password_enc: ".$password_enc;
-2
По вопросам рекламы [email protected]