2016-06-30 69 views
0

上午PHP mysqli的總和

我想基於查詢與用戶會話相關聯的MySQL數據庫列數據寫一個PHP的mysqli和查詢。因此腳本應該關閉,獲取與列A中會話用戶名關聯的所有db數據,然後從列B中提取一個變量,然後求出與列B變量匹配的列C值。

繼承人我有,它產生0作爲結果,而不是銷售列C中的數據的總和。

DB表如下所示:

Column A/Column B/Column C 

Bill /Sales /15.00 

Helen /Sales /32.00 

James /Accounts/20.00 

.. 

當前的代碼如下所示:

<?php 
    session_start(); 
    $db = new mysqli('DBHOST.com', 'DBUsername', 'DBPassword', 'DBNAME'); 
    if ($db->connect_errno > 0) { 
     die('Unable to connect to database [' . $db->connect_error . ']'); 
    } 
    $sql = mysqli_query($db, "SELECT * FROM Table_Name WHERE ColumnA = '" . $_SESSION["username"] . "'"); 
    $count = mysqli_num_rows($sql); 
    if ($count == 1) { 
     $output = mysqli_fetch_assoc($sql); 
     $columnBresult = trim($output['ColumnB']); 
    } 
    $sumquery = mysqli_query($db, "SELECT SUM(ColumnC) as total FROM Table_Name WHERE ColumnB = '$columnBresult'"); 
    $row = mysqli_fetch_assoc($sumquery); 
    $sum = $row['total']; 
    echo $sum > 0 || $sum !== null ? $sum : "0"; 
?> 

歡迎任何想法..

+0

代碼看起來很好,只需檢查會話變量中是否有任何用戶名。 'session_start()'之後'print_r($ _ SESSION)'告訴你什麼? – mitkosoft

+0

會話啓動的用戶名由另一頁上的數據庫登錄結轉,這是正確的值,並存在於數據庫中。我在這裏沒有顯示一些腳本,在這裏我向用戶打招呼。 – Spanner

+0

只是要清楚,我試圖根據列B中的Bills相關部門名稱獲得C列的部門總數。 – Spanner

回答

1

在所有檢查的頂部是有你的$_SESSION['username']任何用戶名值變量。此外,您可以通過連接在同一個表實現這樣的計算單查詢:

DB表:

mysql> select * from table_name; 
+---------+----------+---------+ 
| ColumnA | ColumnB | ColumnC | 
+---------+----------+---------+ 
| Bill | Sales |  15 | 
| Helen | Sales |  32 | 
| James | Accounts |  20 | 
+---------+----------+---------+ 
3 rows in set 

查詢:

SELECT 
    SUM(t1.ColumnC) AS total 
FROM 
    table_name t1 
    INNER JOIN table_name t2 ON t1.ColumnB = t2.ColumnB 
WHERE 
    t2.ColumnA = 'Bill' 

結果:

+-------+ 
| total | 
+-------+ 
| 47.00 | 
+-------+ 
1 row in set 
+0

所以我的PHP應該看起來像$ result = mysqli_query($ db,「SELECT SUM(t1.ColumnC)as total FROM t1 INNER JOIN t1 t2 ON t1.ColumnB = t2.ColumnB WHERE t2.ColumnA ='」。$ _ SESSION [ 「username」]。「'」) – Spanner

+0

一般來說 - 是的。但是,請再次檢查此會話變量中的內容,並確保用戶名存在於此處。 – mitkosoft

+0

好的用戶名回聲很好,它正在返回,但我上面的代碼是不拉所有的部門成本回我得到的一部分,但不是全部。試圖找出原因。 – Spanner

0

固定它:

<?php 

session_start(); 

$db = new mysqli('DBHost.com', 'DBUsername', 'DBPassword', 'DBName'); 
if($db->connect_errno > 0){ 
die('Unable to connect to database [' . $db->connect_error . ']'); 
} 

$sql = mysqli_query($db, "SELECT ColumnB FROM Table_Name WHERE ColumnA = '".$_SESSION["username"]."'"); 
$fetch = mysqli_fetch_assoc($sql); 
$dept = $fetch['ColumnB']; 


$result = mysqli_query($db, "SELECT SUM(ColumnC) AS total FROM Table_Name WHERE ColumnB = '$dept'"); 
$row = mysqli_fetch_assoc($result); 
$sum = $row['total']; 

echo $sum > 0 || $sum!==null ? $sum : "0"; 
?> 

這對我有用。