使用PDO从两个不同的表中找出两个值的总和
问题描述:
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;
?>
这个代码不工作,我不知道,如果只是增加+
两者单独的选择语句是达到我想要的东西,即使是这样,可能会有更好的正确的方法/这样做更优雅的方式?预先感谢您的帮助。
答
你的错误是未定义的变量$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;
您必须执行2个查询,然后执行这两个值的总和。除非你把桌子设置成你可以加入他们的地方,然后把他们拉出来。 – Skewled
嗨@Skewled感谢您的评论,我可以在我的数据库上执行连接,但我不确定在这里使用的连接类型和语法。 – Emily