Php MySQLi:使用变量查询另一个表
所以,我有一个数据库,里面有几个表。这些表中的大多数都包含关于同一文档的信息,并通过一个ID连接(这很愚蠢,因为它可能都在同一个表中,但我所帮助的公司现在无法更改这一点)。下面是我目前正在处理的两个表的内容 tblDocument:包含ID+其他信息 t验证:包含ID、验证号+其他信息 现在,我想做的是使用PHP和MySQLi,从tblDocument中的ID中找到tblVerification中的验证号。我已经找到了一个解决方案,允许我将变量传递到查询中,但感觉这不是最有效的解决方案,代码让我感到困惑。非常感谢您提供有关查询工作方式或新的更简单解决方案的更多信息Php MySQLi:使用变量查询另一个表,php,html,mysqli,Php,Html,Mysqli,所以,我有一个数据库,里面有几个表。这些表中的大多数都包含关于同一文档的信息,并通过一个ID连接(这很愚蠢,因为它可能都在同一个表中,但我所帮助的公司现在无法更改这一点)。下面是我目前正在处理的两个表的内容 tblDocument:包含ID+其他信息 t验证:包含ID、验证号+其他信息 现在,我想做的是使用PHP和MySQLi,从tblDocument中的ID中找到tblVerification中的验证号。我已经找到了一个解决方案,允许我将变量传递到查询中,但感觉这不是最有效的解决方案,代码让我
<?php
$mysqli = new mysqli("ip", "name", "pw", "db");
$dbDoc = $mysqli->query("SELECT * FROM tblDocument ORDER BY ID");
while ($row = $dbDoc->fetch_assoc()) {
$tempID = $row["ID"];
$bind = 's';
$queryThis = $mysqli->prepare("SELECT verificationNo FROM tblVerification WHERE ID = ?");
$queryThis->bind_param($bind, $tempID);
$queryThis->execute();
$queryThis->bind_result($result);
$queryThis->fetch();
$queryThis->close();
$tempVer = $result;
echo $tempVer . " ";
}
?>
实际问题:这是仅使用PHP和MySQLi实现此结果的最有效方法吗?或者您可以做些什么来简化它?在这种情况下,您应该使用SQL
JOIN
:
您的查询应该是:-
"SELECT tblDocument.*, tblVerification.verificationNo
FROM tblDocument
LEFT JOIN tblVerification
ON tblDocument.ID = tblVerification.ID
ORDER BY tblDocument.ID;"
你试过加入吗
"SELECT tblDocument.*, tblVerification.verificationNo
FROM tblDocument INNER JOIN tblVerification
ON tblDocument.ID=tblVerification.id
ORDER BY ID"
您只需将两个表连接起来:
SELECT tv.id, tv.verificatioNo
FROM tblVerification tv
INNER JOIN tblDocument td
ON tv.id = td.id
ORDER BY tv.id;
如果要筛选某个特定的id
请添加WHERE
条件:
WHERE tv.id = ?