簡體   English   中英

PHP MYSQL,兩個表

[英]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.

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