显示来自php中相关表的数据

问题描述 投票:1回答:2

我有两张桌子,一张是书,另一张是作家。它们通过一对多关系相关联,即编写器中的主键,即w_id是由b_writer命名的书中的外键。但是当我在php脚本中打印b_writer时,它会打印id,即一个数字,但我想要写作者的名字。我该怎么做?

$connect = mysqli_connect("localhost", "root", "", "ecom");  
$query = "SELECT * FROM books WHERE b_id = '".$_POST["book_id"]."'";  
$result = mysqli_query($connect, $query);
    while($row = mysqli_fetch_array($result))  
{  
    echo $row["b_id"] $row["b_desc"] $row["b_name"] $row["b_writer"];
}

当我打印b_writer时,如何打印作者的姓名。

php mysql database
2个回答
2
投票

您应该使用连接来获取表格中的数据,例如:

"SELECT b.*, w.* 
 FROM books as b
 INNER JOIN writer as w on b.b_writer = w.w_id
 WHERE b_id = '".$_POST["book_id"]."'"; 

但是在查询中使用var时要小心,否则会面临sqlinjection风险

为避免这种情况你应该使用prepare语句和绑定参数,例如:

$stmt = $db->prepare("SELECT b.*, w.* 
  FROM books as b
  INNER JOIN writer as w on b.b_writer = w.w_id
  WHERE b_id =?");
$stmt->bind_param("i",$_POST["book_id"] );
$stmt->execute();

0
投票

使用加入

更改您的查询

select a.*,b.* from book as a inner join writer b on a.b_id = b.id where b_id = '".$_POST["book_id"]."'
© www.soinside.com 2019 - 2024. All rights reserved.