2016-09-22 18 views
1

我有以下查詢,我想打印「總計」 我想打印總計,就像我打印的「num_rows」 我該怎麼做?如何在php中準備報表顯示值

$stmt = $conn->prepare("SELECT SUM(total) AS total FROM money"); 
      $stmt->execute(); 
      $stmt->store_result(); 
      print $stmt->total; 

我的表結構都是這樣

id user monthly_pay total 
1 Adam 1500  1500 
2 Erik 1500  1500 
3 Mark 1500  1500 
4 Gusta 1500  1500 
5 Mike 1500  1500 

我想查看總 「75000」

+0

您使用聚合函數所以每次它會返回一個單列每次意味着你將得到固定的結果1. –

+0

現在上Phpmyadmin它只返回1個結果。因爲這是總的請求 – Donjwan

+0

您正在使用sum()函數返回一行,並且在結果集中,您正在獲取num_row,因此我將只有1個 –

回答

2

它嚴格不使用需要在不處理用戶輸入時準備好的語句,但是使用它也沒有什麼不利(如果你是這樣的話) xpand查詢處理變量/用戶輸入,地面工作已經完成!)。這意味着對於這樣的靜態查詢,您可以使用普通的query()函數。

但是,使用這樣的準備語句,您需要綁定結果並獲取它。使用$stmt->num_rows會欺騙你,因爲這將返回查詢返回的行數 - 這隻會是1.它不會返回結果。

下面的代碼段已修改爲使用bind_result()fetch()。這將準備查詢,將結果綁定到$sum並獲取它。

$stmt = $conn->prepare("SELECT SUM(total) AS total FROM money"); 
$stmt->execute(); 
$stmt->bind_result($sum); 
$stmt->fetch(); 
print "The sum is ".$sum; 

參考

+0

謝謝,這是我想要的 – Donjwan

0

您應該使用PDO::fetch()

$stmt = $conn->prepare("SELECT SUM(total) AS total FROM money"); 
      $stmt->execute(); 
      $stmt->store_result(); 
      $result = $stmt->fetch(PDO::FETCH_ASSOC); 
      print_r($result); 
+0

謝謝,但這並沒有工作, 這應該看到總像「150 000」 – Donjwan

+0

你會得到數組像['total'=> 150000]。所以只需輸入print_r($ result ['total']) – Dmytrechko

+0

OP似乎在使用'mysqli_ *',而不是PDO。 'store_result();'和'$ stmt-> num_rows'是那個跡象;-) – Qirel