I have 2 tables:
Users
ID   usr_login  user_email        display_name
1    john       john@gmail.com    John Jones    
2    steve      steve@att.com     Steve Jobs    
3    tom        tom@verizon.net   Tom Thumb
usermeta
umeta_id  user_id   meta_key    meta_value    
1         1         phone       8005551212    
2         1         email       john@gmail.com    
3         1         b_date      12/25    
20        2         phone       2025554567    
21        2         email       steve@att.com    
22        2         b_date      11/01    
40        3         phone       9095559876    
41        3         email       tom@verizon.net    
42        3         b_date      01/30
Nick was able to help me put together an SQL query that displays the data successfully in this format:
User1-DisplayName     User1-eMailAddress     User1-Phone     User1-Bdate
User2-DisplayName     User2-eMailAddress     User2-Phone     User2-Bdate
User3-DisplayName     User2-eMailAddress     User3-Phone     User3-Bdate
Here is Nick's SQL query:
SELECT u.display_name,
       COALESCE(e.meta_value, '') AS user_email,
       COALESCE(p.meta_value, '') AS phone,
       COALESCE(b.meta_value, '') AS bdate
FROM users u
LEFT JOIN usermeta e ON e.user_id = u.ID AND e.meta_key = 'email'
LEFT JOIN usermeta p ON p.user_id = u.ID AND p.meta_key = 'phone'
LEFT JOIN usermeta b ON b.user_id = u.ID AND b.meta_key = 'b_date'
ORDER BY u.ID
We had to use coalesce since not all users have b_date data.
I would like to generate the same results with a php file to display the data on a webpage.
Here is the PHP code that I have tried. As is the code returns "0 results".
If I comment out the COALESCE, FROM, LEFT JOIN, and ORDER BY lines I get a list of my users with ID, Name, and Email Address.
<?php
$servername = "localhost";
$username = "adminuser";
$password = "mypass";
$dbname = "website";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
$sql = '';
$sql .= "SELECT ID,display_name,user_email from users";
$sql .= "COALESCE(e.meta_value, '') AS user_email";
$sql .= "COALESCE(p.meta_value, '') AS phone";
$sql .= "COALESCE(b.meta_value, '') AS b_date";
$sql .= "FROM users u";
$sql .= "LEFT JOIN usermeta e ON e.user_id = u.ID AND e.meta_key = 'user_email'";
$sql .= "LEFT JOIN usermeta p ON p.user_id = u.ID AND p.meta_key = 'phone'";
$sql .= "LEFT JOIN usermeta b ON b.user_id = u.ID AND b.meta_key = 'b_date'";
$sql .= "ORDER BY u.ID";
$sql = '';
$result = $conn->query($sql);
    echo "ID       Name                      Email Address                                Phone            Birthdate". "<br>";
    
if ($result->num_rows > 0) {
  // output data of each row
  while($row = $result->fetch_assoc()) {
    echo $row["ID"]. "  " . $row["display_name"]. "         " . $row["user_email"]. "          " . $row["phone"]. "          " . $row["b_date"] "<br>";
    
  }
} else {
  echo "0 results";
}
$conn->close();
?>
Thanks in advance, Kevin
