繁体   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