PHP & MySQL - 如果内容不在一个 table 中,请检查另一个
PHP & MySQL - If content is not in one table, check another
我正在尝试设置一个 if/else 案例来查看一个值是否在一个 table 中,然后显示该值,如果它不在一个 table 中,以检查另一个 table.
我在 Cloud 9 中使用 PHP 和 MySQL。电子邮件是从未显示的表单中获取的。
使用正确的电子邮件搜索 table "Customer" 会显示 password_enc,但如果在客户 table 中找不到电子邮件,它会搜索 "Company" table, 就是不显示任何东西。我检查了 PHPMyAdmin,电子邮件存在且有效
我也检查了我的 table,"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;
$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;
您应该使用 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;
对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询 mysqli_query() 将 return 一个 mysqli_result 对象
因此,您实际上可以像这样return检查行数
,而不是检查响应
$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";
}
我正在尝试设置一个 if/else 案例来查看一个值是否在一个 table 中,然后显示该值,如果它不在一个 table 中,以检查另一个 table.
我在 Cloud 9 中使用 PHP 和 MySQL。电子邮件是从未显示的表单中获取的。
使用正确的电子邮件搜索 table "Customer" 会显示 password_enc,但如果在客户 table 中找不到电子邮件,它会搜索 "Company" table, 就是不显示任何东西。我检查了 PHPMyAdmin,电子邮件存在且有效
我也检查了我的 table,"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;
$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;
您应该使用 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;
对于成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询 mysqli_query() 将 return 一个 mysqli_result 对象
因此,您实际上可以像这样return检查行数
,而不是检查响应$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";
}