2016-01-07 50 views
4

因此,我有一个数据库中有几个表。大多数这些表包含关于同一文件的信息,并通过一个ID连接(这很愚蠢,因为它可能都在同一张表中,但我正在帮助的公司现在无法更改此权限)。我目前正在处理的2个表格的内容可以在下面看到。MySQLi:查询变量到另一个表

tblDocument:包含ID +其他信息。

tblVerification:包含ID,verificationNo +其他信息。

现在,我想要做的就是找到verificationNotblVerificationIDtblDocument,使用PHP和库MySQLi。我找到了一个解决方案,它允许我将一个变量传递给查询,但它并不认为这是最有效的解决方案,代码让我感到困惑。任何有关查询如何工作的附加信息或新的更简单的解决方案非常感谢。

<?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这一结果的最有效的方式和/或你能做些什么来简化呢?

回答

2

你有没有尝试加入?

"SELECT tblDocument.*, tblVerification.verificationNo 
FROM tblDocument INNER JOIN tblVerification 
    ON tblDocument.ID=tblVerification.id 
ORDER BY ID" 
1

你应该在这种情况下使用SQL JOIN: -

您的查询应该是: -

"SELECT tblDocument.*, tblVerification.verificationNo 
FROM tblDocument 
LEFT JOIN tblVerification 
ON tblDocument.ID = tblVerification.ID 
ORDER BY tblDocument.ID;" 
1

你可以简单地连接两个表:

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 = ?