简体   繁体   English

PHP MYSQL,两个表

[英]PHP MYSQL, two tables

I have two tables and i want to echo the total call count once each user logins: 我有两个表,我想在每个用户登录后回显总呼叫计数:

Login 登录

Firstname | Lastname | Login ID
------------------------------
Tyler     | Durden    | 3

Call Count 通话次数

Name        | Call Count | Open       | GrandTotal
------------------------------
Tyler Durden| 100        |    33      | 133

i tried: 我试过了:

 <?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);
?>

But its not working, i think i have to join the the two tables to get it to work. 但是它不起作用,我想我必须加入两个表才能使其起作用。 What do you think? 你怎么看?

Assuming your Call Count table is actually called csvdata, you'll want to format your SQL request string a bit by adding single quotes around the WHERE name = part. 假设您的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);
?>

Good practice would require that you use primary keys to facilitate joins between tables and make sure two users with the same name can be differenciated. 优良作法是要求您使用主键来促进表之间的联接,并确保可以区分两个具有相同名称的用户。

In that case you may want to consider replacing the Name column in your Call Count table for your loginID. 在这种情况下,您可能需要考虑用Call Count表中的Name列替换您的loginID。 This way you could get your name from the Login table (as shown below). 这样,您可以从“登录”表中获取您的姓名(如下所示)。 Also, as bad as it is to have duplicated data like your user's name in both tables, you do not need your GrandTotal column since you can easily get the sum of CallCount and Open to get the exact same number. 同样,在两个表中都有重复的数据(例如用户名),这很糟糕,您不需要GrandTotal列,因为您可以轻松获取CallCount和Open的总和以获取完全相同的数字。 In the end, your query should look more like this (assuming your tables are called Login and CallCount). 最后,您的查询应该看起来像这样(假设您的表称为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