php - 使用主键从不同的表中获取字词
问题描述
我有一个表格记录从工厂到客户的货物运输,在这个表格中我只注册工厂和客户代码,但我需要他们的名字出现在我的网页上。
我正在使用 mysqli 语句从表中获取我的数据。我在 raspbian 服务器上的 phphmyadmin 上使用 Mysql 数据库。
我不想更改 sql 表中的任何内容,我只想让更改出现在网页上。
<?php
require '../include/header.php';
require '../include/dbhandler.php';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Gestion des contenant</title>
<link rel="stylesheet" href="../../style.css" />
</head>
<?php if(isset($_SESSION["username"])){
echo'
<body>
<div><p> vue global des client </p></div>
<form action="include/gestioncontenant.inc.php" method="post">
<input type="text" name="clientName" placeholder="Nom du Client"/><br>
<button type="submit" name="login-submit">Search</button>
</form><br>';
// Récupération de la table client
$sql = "SELECT * FROM `mouvement` WHERE 1";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql) && isset($_SESSION["username"])) {
header("location: ../gestioncontenant.php?error=sqlerror");
exit();
}
else {
mysqli_stmt_bind_param($stmt, "s", $clientName);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
echo '<table border="1">';
echo "<tr><td>Code</td><td>Type</td><td>Date</td><td>Site de prod</td><td>Client</td><td>Contenant</td><td>Quantité</td><td>Transporteur</td></tr>";
while($row = mysqli_fetch_assoc($result)){
echo "<tr><td>{$row["mouvement_code"]}</td><td>{$row["mouvement_type"]}</td><td>{$row["mouvement_date"]}</td><td>{$row["site_code"]}</td><td>{$row["client_code"]}</td><td>{$row["contenant_code"]}</td><td>{$row["contenant_quantite"]}</td><td>{$row["transporteur_code"]}</td></tr>\n";
}
}
echo"</table><br>";
}?>
<a href="../home.php"> retour</a>
</body>
</html>
在“运动”表中,我只有客户和工厂(站点)的 ID(外键),我需要显示名称。我只使用 html 和 php,但如果它们是 javascript 或其他语言的解决方案,我将实现它。谢谢!
解决方案
你需要多解释一下其他表的样子
我会假设你有这张桌子
移动(client_code,site_code,mouvement_code,mouvement_type,contenant_code,ETC)
现在'client_code'是客户端的ID吗?如果是的话,你有另一张这样的桌子吗?:
客户(client_name,client_code,ETC)
如果是,那么您只需在请求中的两个表之间的 clientID 上进行连接:
SELECT a.*, b.client_name FROM `mouvement`a
left join 'client' b on a.client_code = b.client_code
WHERE conditions
然后 $row['client_name'] 将被定义,你将能够把它放在你的表中
编辑 :
所以如果你有其他桌子
内容(内容名称,内容代码,ETC),
SITE(site_name, site_code, ETC),查询变为:
SELECT a.*, b.client_name, c.contenant_name, d.site_name FROM `mouvement`a
left join 'client' b on a.client_code = b.client_code
left join 'contenant' c on a.contenant_code = c.contenant_code
left join 'site' d on a.site_code = d.site_code
WHERE conditions
推荐阅读
- c# - unity ML 代理和外部数据
- python - 'similar_by_word' 在迭代中没有改进
- ios - Swift 组合:`prefix(untilCompletionFrom)`?
- ansible - 让 ansible vars 是一个数字范围
- exception - Kotlin协程异常处理——如何抽象try-catch
- blazor - 无法在客户端 blazor 中覆盖 OnAfterRenderAsync
- c++ - 任何与 C++ 互操作的语言?
- ubuntu - Subclipse 安装失败:SVN 首选项可见,但没有其他内容(例如上下文团队子菜单中的任何内容)。什么不见了?
- jackson - 哪个版本的jackson-databind没有远程执行漏洞?
- relational-database - 从模式创建 ERD?