2015-09-20 121 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

相关问题