Я пытаюсь установить случай 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;
Для успешных запросов SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query () вернет объект mysqli_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";
}
Вы должны использовать 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;
$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;