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

时间:2013-05-01 00:27:49

标签: php html mysql variables

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

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

我在库存表中有“价格”栏目 成员表中的“余额”列。

单击按钮时,我希望从成员的余额中减去股票的价格。

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

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 />");

    }
}

模式: enter image description here

<?php 
include_once 'functions.php';

createTable('members',
            'id INT(50) NOT NULL AUTO_INCREMENT,
            firstname VARCHAR(100),
            surname varchar(100),
            user varchar(30),
            pass varchar(30),
            email varchar(100),
            balance float(12),
            PRIMARY KEY (id)');


createTable('stocks', 
            'id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(16),
            price float(16)');

createTable('profiles',
            'user VARCHAR(16),
            text VARCHAR(4096)');

?>

2 个答案:

答案 0 :(得分:0)

UPDATE members m join stocks s on s.id = m.stock_id where m.balance = m.balance - s.price

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

答案 1 :(得分:0)

一般来说:

UPDATE Members
INNER JOIN Stocks ON Stocks.Name = '<name-of-stock>'
SET balance = balance - Stocks.price * <number-of-stocks>
WHERE Members.ID = <member-id>

使用mysqli与数据库进行交互。它更安全。这是一个例子;除了数据库连接信息之外,你还需要提供股票名称,股票数量和会员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);