显示来自 INNER JOIN 的特定行 - mysqli

Displaying specific row from INNER JOIN - mysqli

我正在尝试显示有关当前登录用户的信息。问题是我需要的信息在两个不同的表中,所以我不得不使用 INNER JOIN 并且我无法显示数据。

<?php 
$email = $_SESSION['email'];

$sql_address = 
"SELECT `customer`.`email`, `address`.`first_name`, `address`.`last_name` 
FROM `customer` INNER JOIN address ON `customer`.`customer_ID`=`address`.`customer_ID WHERE email =". $email; 
$result_address = $db->query($sql_address);


if(isset($_SESSION['email'])){ 
while($row = mysqli_fetch_array($result_address)){ ?>
                         <div class="col-sm-4 mb-20">
                            <div class="mb-20 mb-md-10">
                               <h3> CUSTOMER DETAILS</h3>
                               <p>Name: <?php echo $row['first_name']. " " .$row['last_name'];?><br/>
                                  Email: <?php echo $row['email'];?>
                               </p>
                            </div>
                         </div>
                         <?php }?>

此时我收到此错误:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in D:\xamp\htdocs\exercises\website\shipment.php on line 149

你能告诉我哪里有问题吗?另外,您对如何使其更安全有什么建议吗?我想将 $email 放入 query 可能不是最好的主意。

可能您在 sql 语句中有错误,所以 $result_address 是错误的。 $email 应该用单引号,并在 `customer_ID

后面加上右引号

试试这个查询

SELECT `customer`.`email`, `address`.`first_name`, `address`.`last_name` 
FROM `customer` INNER JOIN address ON `customer`.`customer_ID`=`address`.`customer_ID` WHERE email = '". $email . "'";