在php中显示相关表中的数据
我有两张桌子,一张是书,另一张是作家。它们通过一对多关系关联,即writer中的主键,即w_id是由b_writer命名的书籍中的外键。但是,当我在php脚本中打印b_writer时,它会打印id,即一个数字,但我需要编写器的名称。我怎么做在php中显示相关表中的数据,php,mysql,database,Php,Mysql,Database,我有两张桌子,一张是书,另一张是作家。它们通过一对多关系关联,即writer中的主键,即w_id是由b_writer命名的书籍中的外键。但是,当我在php脚本中打印b_writer时,它会打印id,即一个数字,但我需要编写器的名称。我怎么做 $connect = mysqli_connect("localhost", "root", "", "ecom"); $query = "SELECT * FROM books WHERE b_id = '".$_POST["book_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
使用join时,如何打印writer的名称
更改您的查询
select a.*,b.* from book as a inner join writer b on a.b_id = b.id where b_id = '".$_POST["book_id"]."'
您应该使用联接从两个表中获取数据,例如:
"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语句和binding参数,例如:
$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();
您需要一个连接:所有查询仍然显示编写器的id,而不是其名称