亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 PHP 正確存儲組 BY 的查詢響應

使用 PHP 正確存儲組 BY 的查詢響應

PHP
MM們 2022-09-17 22:34:25
我有一個大數據庫,存儲了很多關于客戶和賬單等的信息。我想做的是,使用客戶的ID,搜索他們所有的賬單,SUM()每個包含的價格,并存儲它們以打印一個唯一的賬單。所以我沙吞聲地想著這個:try {    $conn = new PDO('mysql:host=myhost;dbname=accounting','user','pass');    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);}catch(PDOException $e){    echo "ERROR: " . $e->getMessage();}$stmt = $conn->prepare('SELECT GROUP_CONCAT(DISTINCT source_external_subscriber_id) AS ids                         FROM cdr');$stmt->execute();foreach ($stmt as $row) {    $string = $row['ids'];}$array = explode(',', $string);array_pop($array);array_shift($array);$destinationId = 0;foreach ($array as $id) {    $stmt2 = $conn->prepare('SELECT id, call_type, source_customer_cost                             FROM cdr                             WHERE source_external_subscriber_id = :id                             AND destination_account_id = :destinationId');    $stmt2->execute(array('id' => $id, 'destinationId' => $destinationId));    foreach ($stmt2 as $row2) {        $datos[] = $row2;    }}我不相信結果,所以我決定自己檢查,首先執行我的代碼廣告,然后尋找客戶將賬單數量與數組的長度進行比較(因此還缺少SUM()然后,當我正在尋找一種更有說服力的方式時,我偶然發現了這個非常有用的帖子。所以我把我的代碼改成了這個。但在這里,他們只解釋如何編寫查詢,而不是如何將其存儲在數組中。try {    $conn = new PDO('mysql:host=host;dbname=accounting','user','pass');    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);    var_dump($conn);}catch(PDOException $e){    echo "ERROR: " . $e->getMessage();}$destinationId = 0;$stmt2 = $conn->prepare('SELECT source_external_subscriber_id, source_customer_cost FROM cdr WHERE destination_account_id = :destinationId GROUP BY source_external_subscriber_id');$stmt2->execute(array('destinationId' => $destinationId));foreach ($stmt as $row) {     $datos[] = $row2;}謝謝大家的幫助,希望大家有美好的一天!
查看完整描述

2 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

因此,如果我正確理解您,則您正在搜索類似以下內容的內容:

SELECT source_external_subscriber_id id, (SELECT SUM(source_customer_cost)) total FROM cdr GROUP BY source_external_subscriber_id;



查看完整回答
反對 回復 2022-09-17
?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

因此,這個問題的答案和簡單一樣棘手:查詢返回的數組有重復的行,也許我錯了for-each語句,因為我最近開始使用它們。無論如何,以下是查詢和我的存儲解決方案:


$destinationId = 0;

$stmt2 = $conn->prepare('SELECT source_external_subscriber_id, SUM(source_customer_cost) FROM cdr WHERE destination_account_id = :destinationId GROUP BY source_external_subscriber_id');

$stmt2->execute(array('destinationId' => $destinationId));


foreach ($stmt2 as $row2) {

    $data[] = $row2;

}


for ($i=0; $i < sizeof($data); $i++) { 

    $sanitizedData[$i] = array(

        0 => $data[$i][0],

        1 => $data[$i][1]

    );

}


查看完整回答
反對 回復 2022-09-17
  • 2 回答
  • 0 關注
  • 145 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號