2013-05-01 186 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); 
相關問題