gpt4 book ai didi

php - 在 PHP 中打印一个有点复杂的 MYSQL 查询表

转载 作者:行者123 更新时间:2023-11-30 01:21:52 25 4
gpt4 key购买 nike

我有一个包含 2 个表 User、Contact_List 的数据库。

例如,用户表如下所示:

  U_id | U_email | U_password | U_mobileNo | U_name |
---------------------------------------------------
1 | a@b.c | aaa | 1234567 | Adam |

2 | b@b.c | bbb | 1234567 | Ben |

3 | c@b.c | ccc | 1234567 | Carl |

Contact_list 表如下所示。该表仅由将两个用户关联在一起的外键组成

  U_id | U_contact_id
-------------------
1 | 2

2 | 3

现在的问题是我的 SQL/PHP 查询显示包含特定用户联系人列表的表。

这个 SQL 查询工作正常并给出了我想要的结果:

"SELECT cu.u_name, cu.u_email 
FROM contact_list = c, user = u, user = cu
WHERE c.u_id = 2
AND c.u_contactId = c.u_id
AND c.u_id = u.u_id"

但是这个 PHP 代码:

$con = mysqli_connect("dbname","dbuser","pbpass","db");
//Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT cu.u_name, cu.u_email
FROM contact_list = c, user = u, user = cu
WHERE c.u_id = 2
AND c.u_contactId = c.u_id
AND c.u_id = u.u_id" ) or die(mysql_error());

echo "<table border='1'>
<th>Contact List</th>
<tr>
<th>Name</th>
<th>E-mail</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['u_name'] . "</td>";
echo "<td>" . $row['u_email'] . "</td>";
echo "</tr>";


}
echo "</table>";
mysqli_free_result($result);
mysqli_close($con);

?>

该代码只是在页面上打印一个空白表格。

我在这里做错了什么?

我是一个使用 PHP 的菜鸟,任何帮助或建议将不胜感激。

最佳答案

您想要检索 id 为 2 的用户的所有联系人,因此您的查询基本上如下所示:

SELECT u.u_name, u.u_email 
FROM contact_list cl
JOIN user u
ON cl.u_contact_id = u.u_id
WHERE cl.u_id = 2

Live DEMO.

上面的查询的作用是,它将根据u_contact_id连接用户信息,并列出所有注册的姓名和电子邮件。

你的 PHP 看起来像这样:

<?php
// your database info here
$db_host = '';
$db_user = '';
$db_pass = '';
$db_name = '';

$con = mysqli_connect($db_host,$db_user,$db_pass,$db_name);
if($con->connect_error)
die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());

if (!$stmt = $con->prepare("SELECT u.u_name, u.u_email
FROM contact_list cl
JOIN user u
ON cl.u_contact_id = u.u_id
WHERE cl.u_id = ?"))
die('Prepare Error: ' . $con->error);

$id = 2;
if (!$stmt->bind_param('i', $id))
die('Bind Parameters Error ' . $stmt->error);

if (!$stmt->execute())
die('Select Query Error ' . $stmt->error);
?>
<table border="1">
<th>Contact List</th>
<tr>
<th>Name</th>
<th>E-mail</th>
</tr>
<?php
$stmt->bind_result($name,$email);
while ($stmt->fetch())
{
?>
<tr>
<td><?php echo $name; ?></td>
<td><?php echo $email; ?></td>
</tr>
<?php
}
echo "</table>";
$stmt->close();
$con->close();

关于php - 在 PHP 中打印一个有点复杂的 MYSQL 查询表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18436765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com