【问题标题】:Find the SUM of two values from two different tables using PDO使用 PDO 从两个不同的表中查找两个值的总和
【发布时间】:2015-09-20 03:07:58
【问题描述】:

嗨_我正在尝试使用 PDO 在我的数据库中的两个单独表中查找两个单独值的总和,但我遇到了一些问题。

我有两个表:“余额”和“奖励”。

“balance”有两个字段:user_id & g_balance。

“reward”有这两个字段:user_id 和rewards。

我试图找出 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;

?>

这段代码不起作用,我不确定在两个单独的 select 语句之间添加 + 是否是实现我想要的正确方法,即使是这样,可能会有更好/更优雅这样做的方式?提前感谢您的帮助。

【问题讨论】:

  • 您必须执行 2 次查询,然后将两个值相加。除非您将表格设置为可以加入它们并以这种方式拉动它们的位置。
  • 嗨@Skewled 感谢您的评论,我可以在我的数据库上执行连接,但我不确定在这里使用什么类型的连接和语法。

标签: javascript php mysql ajax pdo


【解决方案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;

【讨论】:

  • 嗨@elias-nicolas 感谢您的回复,我不明白您所说的未定义变量是什么意思,它在这里定义:``$userid = $_POST['userid'];` ` id 由包含在 javascript 函数中的 ajax 帖子发送到 php 文件。
  • 你在定义之前使用它。如果你在使用它之后定义它,它是未定义的。你试过代码吗?非常简单,如果您阅读的话。
  • 我进行了您建议的更改,但它在控制台中返回空白结果(我将 Javascript 设置为 console.log 来自 php 的响应)。它没有显示任何语法错误,所以我不确定出了什么问题,您有什么建议吗?
  • 我更正了代码。它正在回显 $result 而不是 $row 所以,现在它应该可以工作了。
  • 嗨,它正在返回单词Array,所以我需要更改它以说明正在回显的行,所以我不得不将其更改为echo $row['Sum']; 它现在正在工作,所以我正在标记你的答案正确,感谢您的宝贵时间!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
相关资源
最近更新 更多