![](/img/trans.png)
[英]Pulling users information from mysql table, using a $_SESSION or $_GET, PHP?
[英]MySQL pulling information from multiple table issue
我正在嘗試從2個不同的表中訪問信息,並試圖檢索該信息,但是所有這些操作都多次拉入用戶信息,以等待表tbl_fruits中列出多少個水果。
希望能夠一次顯示用戶信息並同時提取與該用戶關聯的水果數量。
2個表:tbl_users:用戶標識名姓
tbl_fruits:用戶ID水果
在示例代碼中,用戶ID 4在tbl_fruit中具有3個與他相關聯的水果。 從下面的結果中可以看到,用戶信息被多次列出。 我該如何重寫代碼,以便將用戶信息提取一次,並顯示3次結果。
$clientID = "4";
try
{ $stmt = $dbcon1 ->query("SELECT
tbl_fruits.fruit,
tbl_users.userid,
tbl_users.firstname,
tbl_users.lastname
FROM tbl_users
LEFT JOIN tbl_fruits
ON tbl_fruits.userid = tbl_users.userid
WHERE tbl_users.userid = '$clientID' ");
$testArray = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
catch(PDOException $e)
{ echo $e->getMessage(); }
echo '<pre>';
print_r($testArray);
echo '</pre>';
結果
array
(
[0] => Array
(
[fruit] => Apple
[userid] => 4
[firstname] => John
[lastname] => Smith
)
[1] => Array
(
[fruit] => Orange
[userid] => 4
[firstname] => John
[lastname] => Smith
)
[2] => Array
(
[fruit] => Banana
[userid] => 4
[firstname] => John
[lastname] => Smith
)
)
如下更改查詢:
{ $stmt = $dbcon1 ->query("SELECT
count(tbl_fruits.userid)
tbl_users.userid,
tbl_users.firstname,
tbl_users.lastname
FROM tbl_users
LEFT JOIN tbl_fruits
ON tbl_fruits.userid = tbl_users.userid
WHERE tbl_users.userid = '$clientID'
GROUP BY tbl_users.userid ");
count(tbl_fruits.userid)
部分計算具有該行的值tbl_fruits.userid
的唯一行數,而GROUP BY tbl_users.userid
部分則消除重復項。
確保將索引放在tbl_users.userid
和tbl_fruits.userid
以獲得最佳性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.