簡體   English   中英

從table1中的外鍵獲取table2信息

[英]Getting table2 Info from foreign key in table1

什么查詢可以使用table1具有的外鍵來獲取table1&table2的全部數據?

我進了table1

用戶名密碼person_id(外鍵)

在表2中

ID名稱姓氏地址

我需要一個查詢

SELECT * FROM table1, table2 
WHERE table1.username='$var' && table1.password = '$var' 
&& "table1.person_id = table2.id" 

(這是我不知道的部分)〜而且我知道這是一個非常不安全的查詢

對不起,我使用mysqli函數和東西的菜鳥問題

您正在尋找的是JOIN ,特別是INNER JOIN JOIN作用是根據某些條件將記錄從一個表匹配到另一個表。 所以你想要的是

    SELECT 
        * 
    FROM 
        table1
        INNER JOIN table2 ON table1.person_id = table2.id
    WHERE 
        table1.username='$var' 
        AND table1.password = '$var';

查看站點以獲取有關聯接的說明。

您將過多的PHP與SQL混合在一起,並且查詢對聯接使用了過時的語法

您希望查詢看起來像這樣

"SELECT * 
FROM table1, table2 
JOIN table2 ON table1.person_id = table2.id
WHERE table1.username='$var' 
AND table1.password = '$var'"

由於您已將其標記為mysqli,因此,如果要將其與mysqli連接一起使用,則將使用以下內容連接到數據庫:

$dbc = new mysqli($host, $username, $password, $dbname);
    if  ($dbc->connect_error) {
    die("Connection failed: " . $dbc->connect_error);
}

$query = "SELECT * 
FROM table1, table2 
JOIN table2 ON table1.person_id = table2.id
WHERE table1.username='$var' 
AND table1.password = '$var'";

然后這樣稱呼它

$dbc->query($query);

您可能會通過POST (來自表單)或GET變量來GET變量。

例:

$var = $_POST['var'];

其中var是HTML表單中的命名輸入字段,例如

<input type="text" name="var" />

當然,這僅僅是一個開始。 我希望我不要回答太多。

編輯:注意,如果您希望以更安全的方式執行此操作,以下是使用准備好的語句執行相同查詢(使其成為兩個變量)的方法:

$query = $dbc->("SELECT col1, col2
FROM table1, table2 
JOIN table2 ON table1.person_id = table2.id
WHERE table1.username=? 
AND table1.password = ?");

$query->bind_param("ss",$var1,$var2);
$query->execute();

然后您可以從選擇中調用這些項並將它們綁定到變量中,如下所示:

$query->bind_results($col1, $col2);

然后關閉查詢

$query->close();

注意bind_param"ss"表示兩個變量都是字符串。 如果是整數,請使用i

(當然我會繼續一點):

要調用這些變量,您可以做

while ($query->fetch()) {
    echo $col1;
    echo $col2;

}

但我離題了...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM