2016-01-07 89 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 = ?