[英]PHP MYSQL, two tables
我有兩個表,我想在每個用戶登錄后回顯總呼叫計數:
登錄
Firstname | Lastname | Login ID
------------------------------
Tyler | Durden | 3
通話次數
Name | Call Count | Open | GrandTotal
------------------------------
Tyler Durden| 100 | 33 | 133
我試過了:
<?php
$result = mysqli_query($mysqli, "SELECT * FROM csvdata WHERE Name=".$_SESSION['firstname']. ' ' .$_SESSION['lastname']." ");
while($res = mysqli_fetch_array( $result )) {
echo $res['Open'].' Open Calls';
echo $res['GrandTotal'].' Grand Total Calls';
}
mysqli_close($mysqli);
?>
但是它不起作用,我想我必須加入兩個表才能使其起作用。 你怎么看?
假設您的Call Count表實際上稱為csvdata,您將需要通過在WHERE name =
part周圍添加單引號來稍微格式化SQL請求字符串。
<?php
$result = mysqli_query($mysqli, "SELECT * FROM csvdata WHERE Name='".$_SESSION['firstname']. ' ' .$_SESSION['lastname']."' ");
while($res = mysqli_fetch_array( $result )) {
echo $res['Call Count'].' Call Count';
echo $res['Open'].' Open Calls';
echo $res['GrandTotal'].' Grand Total Calls';
}
mysqli_close($mysqli);
?>
優良作法是要求您使用主鍵來促進表之間的聯接,並確保可以區分兩個具有相同名稱的用戶。
在這種情況下,您可能需要考慮用Call Count表中的Name列替換您的loginID。 這樣,您可以從“登錄”表中獲取您的姓名(如下所示)。 同樣,在兩個表中都有重復的數據(例如用戶名),這很糟糕,您不需要GrandTotal列,因為您可以輕松獲取CallCount和Open的總和以獲取完全相同的數字。 最后,您的查詢應該看起來像這樣(假設您的表稱為Login和CallCount)。
<?php
$result = mysqli_query($mysqli, "SELECT l.FirstName, l.LastName, cc.CallCount, cc.Open, (cc.CallCount + cc.Open) AS GrandTotal FROM Login AS l JOIN CallCount AS cc ON l.LoginID = cc.LoginID WHERE l.FirstName LIKE \"".$_SESSION['firstname']."\" AND l.LastName LIKE \"".$_SESSION['lastname']."\"");
// ...
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.