2013-05-01 187 views
0

我有一个MySQL数据库。这包括各种表格,包括'会员'和'股票'。从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)'); 

?> 
+0

你能发表表格的模式吗? – 2013-05-01 00:29:48

+1

难道你不想使用'UPDATE'而不是'INSERT'? – 2013-05-01 00:33:16

+0

@JW웃我现在已经上传模式 – MalvEarp 2013-05-01 00:33:55

回答

0

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

如果你发布你的架构作为fiddle,我居然可以测试这个查询。

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); 
相关问题