Php 从MySQL数据库中获取两个单独的值,进行求和,然后更新其中一个值

Php 从MySQL数据库中获取两个单独的值,进行求和,然后更新其中一个值,php,html,mysql,variables,Php,Html,Mysql,Variables,我有一个MySQL数据库。这包括各种表格,包括“成员”和“库存” 我正在创建一个“股票交易游戏”,希望从用户当前拥有的余额中扣除股票成本 我在stocks表中有一列“price”,并且 “成员”表中的“余额”列 当点击一个按钮时,我想从会员余额中减去股票价格 如果我是诚实的,我不知道如何做到这一点,但作为尝试,这里是我的代码,我已经尝试过了,但实际上什么也没有做: if (isset($_POST['user'])) { $userselection = sanitizeString($

我有一个MySQL数据库。这包括各种表格,包括“成员”和“库存”

我正在创建一个“股票交易游戏”,希望从用户当前拥有的余额中扣除股票成本

我在stocks表中有一列“price”,并且 “成员”表中的“余额”列

当点击一个按钮时,我想从会员余额中减去股票价格

如果我是诚实的,我不知道如何做到这一点,但作为尝试,这里是我的代码,我已经尝试过了,但实际上什么也没有做:

if (isset($_POST['user']))
{
    $userselection = sanitizeString($_POST['userselection']);


    if ($userselection == "")
        $error = "Not all fields were entered<br /><br />";
    else
    {
            $stockprice = queryMysql("SELECT price FROM stocks WHERE name='$userselection'");
            $newbalance = ($balance - $stockprice);
            queryMysql("INSERT INTO members VALUES('', '', '', '', '', '', '$newbalance',  )");
            die("<h4>You just bought $userselection</h4><br /><br />");

    }
}
if(isset($\u POST['user']))
{
$userselection=sanitizeString($_POST['userselection']);
如果($userselection==“”)
$error=“并非所有字段都已输入

”; 其他的 { $stockprice=queryMysql(“从股票中选择价格,其中名称为“$userselection”); $newbalance=($balance-$stockprice); queryMysql(“在成员中插入值(“”、“”、“”、“”、“”、“”、“$newbalance’,)”); 死(“你刚买了$userselection

”; } }
模式:


更新成员m在s.id=m.stock\u id上加入股票s,其中m.balance=m.balance-s.price

如果您将您的模式发布为,我实际上可以测试此查询。

一般来说:

UPDATE Members
INNER JOIN Stocks ON Stocks.Name = '<name-of-stock>'
SET balance = balance - Stocks.price * <number-of-stocks>
WHERE Members.ID = <member-id>
更新成员
股票上的内部联接股票。名称=“”
设置余额=余额-股票价格*
其中Members.ID=
用于与数据库交互。这样更安全。这里有一个例子;除了数据库连接信息之外,您还需要提供股票名称、股票数量和会员ID,但即使您不使用mysqli,您也需要执行所有这些操作:

$sql = <<< ENDSQL
  UPDATE Members
    INNER JOIN Stocks ON Stocks.Name = ?
    SET balance = balance - Stocks.price * ?
    WHERE Members.ID = ?
ENDSQL

$stockName = '<the stock name>';
$numStocks = <number of stocks>;
$memberId = <member ID>;

$conn = new mysqli('hostname', 'username', 'pass', 'database if needed');
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, 'sdi', $stockName, $numStocks, $memberId);
mysqli_stmt_execute($stmt);

$sql=您能发布表的架构吗?您不想使用
UPDATE
而不是
INSERT
?@JW吗웃 我现在已经上传了schema@ExplosionPills我真的只是把它从更新改为插入吗?
$sql = <<< ENDSQL
  UPDATE Members
    INNER JOIN Stocks ON Stocks.Name = ?
    SET balance = balance - Stocks.price * ?
    WHERE Members.ID = ?
ENDSQL

$stockName = '<the stock name>';
$numStocks = <number of stocks>;
$memberId = <member ID>;

$conn = new mysqli('hostname', 'username', 'pass', 'database if needed');
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, 'sdi', $stockName, $numStocks, $memberId);
mysqli_stmt_execute($stmt);