首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP MYSQL连接两个表并回显数据

问PHP MYSQL连接两个表并回显数据
EN

Stack Overflow用户
提问于 2017-07-24 17:13:35
回答 3查看 3.7K关注 0票数 0

我有两张桌子

表personal_info包含以下信息

代码语言:javascript
复制
+--------+--------+--------+--------+
|   id   | fname  | lname  | email  |
+--------+--------+--------+--------+
|        |        |        |        |
+--------+--------+--------+--------+

表other_info包含以下信息

代码语言:javascript
复制
+--------+-----------------+--------------+----------------+
|   id   | university_name | course_name  | business_name  |
+--------+-----------------+--------------+----------------+
|        |                 |              |                |
+--------+-----------------+--------------+----------------+

现在,我想使用PHP连接这些表,并从两个表中获取信息。我决定这样做

代码语言:javascript
复制
<?php
include ('config.php');
$con = mysqli_connect($host, $user, $pass, $db) or die ('Cannot Connect : '.mysqli_error());
$sql = "select * from personal_info, other_info "; // Here i want to join the two tables to echo results
$result = mysqli_query($con,$sql)  or die("Error: ".mysqli_error($con));
while( $row = mysqli_fetch_array( $result, MYSQLI_ASSOC ) ){

    echo "$row['fname'] ."".$row['lname'] ."".$row['university_name'] ."".$row['course_name'] ."".$row['businessname'] ";
}


?>

如何连接表并获取数据?

EN

回答 3

Stack Overflow用户

发布于 2017-07-24 17:23:21

您需要先在other_info表中设置一个外键,以便可以通过该键进行连接。

那么像这样的select应该可以工作

代码语言:javascript
复制
select fname, lname, university_name, course_name, business_name
from personal_info t1
inner join other_info t2 on (t1.id = t2.personal_id)

t2.personal_id是表other_info中的外键列

票数 2
EN

Stack Overflow用户

发布于 2017-07-24 17:24:37

代码语言:javascript
复制
<?php
include ('config.php');
$con = mysqli_connect($host, $user, $pass, $db) or die ('Cannot Connect : '.mysqli_error());
$sql = "SELECT personal_info.id,personal_info.fname,personal_info.lname,personal_info.email, other_info.university_name,other_info.course_name,other_info.business_name FROM personal_info FULL OUTER JOIN other_info ON personal_info.id=other_info.id;"; 
$result = mysqli_query($con,$sql)  or die("Error: ".mysqli_error($con));
while( $row = mysqli_fetch_array( $result, MYSQLI_ASSOC ) ){

    echo "$row['fname'] ."".$row['lname'] ."".$row['university_name'] ."".$row['course_name'] ."".$row['businessname'] ";
}


?>
票数 0
EN

Stack Overflow用户

发布于 2017-07-24 17:30:55

personal_info和other_info表之间没有关系。通过它,不可能知道与特定记录相关的其他信息。

所以,你可以做一件事。在other_info表中创建一列personal_info_id,它将存储personal_info表的id。

像这样:

personal_info

代码语言:javascript
复制
id | fname | lname | email
1   UserFN  UserLN  user@email
2   User2FN User2LN user2@email

other_info

代码语言:javascript
复制
id | personal_info_id | university_name | course_name | business_name
1       1                 UniV               PHP           ABC
2       2                 UniVY              C++           XYZ

现在,您可以使用other_info的personal_info_id和personal_info的id来连接两个表

代码语言:javascript
复制
SELECT pfo.*, ofo.* 
FROM personal_info pfo, other_info ofo 
WHERE pfo.id = ofo.personal_info_id;

已更新代码

代码语言:javascript
复制
<?php
include ('config.php');
$con = mysqli_connect($host, $user, $pass, $db) or die ('Cannot Connect : '.mysqli_error());
$sql = "SELECT pfo.*, ofo.* FROM personal_info pfo, other_info ofo WHERE pfo.id = ofo.personal_info_id;";
$result = mysqli_query($con,$sql)  or die("Error: ".mysqli_error($con));
while( $row = mysqli_fetch_array( $result, MYSQLI_ASSOC ) ){
  echo $row['fname']." / ".$row['lname']." / ".$row['email']." / ".$row['university_name']." / ".$row['course_name']." / ".$row['business_name'];
}?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45276589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档