2015-09-20 124 views
0

Hi_I'm試圖使用PDO在我的數據庫中的兩個單獨的表中找到兩個單獨值的SUM,但我遇到了一些麻煩。使用PDO從兩個不同的表中找出兩個值的總和

我有兩個表:「平衡」和「獎勵」。

「平衡」有這兩個字段:user_id說明& g_balance。

「獎勵」有以下兩個字段:user_id &獎勵。

我試圖找出balance.g_balance之和reward.rewards是什麼,然後有我的PHP文件呼應結果返回給我的JavaScript函數。

該函數通過AJAX POST將用戶的ID號發送到PHP文件。

<?php 

$servername = "myservername"; 
$username = "myusername"; 
$password = "mypassword"; 
$dbname = "mydbname"; 

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $stmt = $conn->prepare("SELECT (SELECT g_balance FROM balance WHERE user_id = :userid) + (SELECT rewards FROM reward WHERE user_id = :userid)"); 
    $stmt->bindParam(':userid', $userid); 
    $userid = $_POST['userid']; 
    $stmt->execute(); 

    while($row=$stmt->fetch()){ 
     echo $result; 
}} 

catch(PDOException $e) 
{ 
    echo "Error: " . $e->getMessage(); 
} 
$conn = null; 

?> 

這個代碼不工作,我不知道,如果只是增加+兩者單獨的選擇語句是達到我想要的東西,即使是這樣,可能會有更好的正確的方法/這樣做更優雅的方式?預先感謝您的幫助。

+0

您必須執行2個查詢,然後執行這兩個值的總和。除非你把桌子設置成你可以加入他們的地方,然後把他們拉出來。 – Skewled

+0

嗨@Skewled感謝您的評論,我可以在我的數據庫上執行連接,但我不確定在這裏使用的連接類型和語法。 – Emily

回答

1

你的錯誤是未定義的變量$userid,並使用相同的變量到兩個bindParam()我用一個JOIN的感覺。免費試用;我沒有。希望能幫助到你。

try { 
     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
     // set the PDO error mode to exception 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

     $stmt = $conn->prepare("SELECT b.g_balance + a.rewards as Sum FROM reward a, balance b WHERE a.user_id = :userid AND b.user_id = a.user_id"); 
     $userid = $_POST['userid']; 
     $stmt->bindParam(':userid', $userid); 
     $stmt->execute(); 
     while($row=$stmt->fetch()){ 
      echo $row['Sum']; 
    } 
} 

    catch(PDOException $e) 
    { 
     echo "Error: " . $e->getMessage(); 
    } 
    $conn = null; 
+0

嗨@ elias-nicolas謝謝你的回覆,我不明白你的意思是變量是未定義的,它的定義如下:''$ userid = $ _POST ['userid'];''id發送給php文件通過一個包含在javascript函數中的ajax文章。 – Emily

+0

您在定義之前使用它。如果您在使用它之後定義它,則它是未定義的。你有沒有嘗試過這些代碼?很簡單,如果你閱讀它。 –

+0

我做了你建議的更改,但它在控制檯中返回空白結果(我將Javascript設置爲console.log來自php的響應)。它沒有在語法中顯示任何錯誤,所以我不確定錯在哪裏,你有什麼建議嗎? – Emily

相關問題