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