2013-05-02 56 views
1

我正在用PHP和SQL创建股票交易游戏。我有一个'购买'功能,将股票ID,用户ID和数量添加到名为'ownedstocks'的表中。使用PHP和SQL的IF-ELSE

我在执行简单的“If-Else”声明时遇到了麻烦。 基本上,我想:

If the user id and the stock id of the stock being purchased are already exists in 'ownedstocks' table, then I just want to update the quantity. Else if no rows exist for the given user id and stock id, then I want to insert a new row.

我的代码,但不确定使用IF-ELSE的。

在此先感谢!

<?php 
include_once 'header.php'; 
$user = $_SESSION['user']; 
$id = $_SESSION['id']; 
$price = $_SESSION['price']; 
$amount=$_POST['amount']; 
$total = $amount*$price; 
$balance = $_SESSION['balance']; 
$con=mysqli_connect("localhost","root","usbw","stocktrading"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

      $newbalance = ($balance - $total); 

      queryMysql("UPDATE ownedstocks 
          SET quantity = (quantity+$amount) 
          WHERE ownedstocks.userid = '$user' and ownedstocks.stockid = '$id'"); 

      queryMysql("INSERT INTO ownedstocks 
         VALUES ('$user', '$id', '$amount')"); 

      queryMysql("UPDATE members 
         SET balance = $newbalance 
         WHERE members.user = '$user'"); 


      echo("You just purchased $id costing $price per stock<br/><br/> 
      You bought $amount stocks<br/><br/> 
      To calculate your bill: $price x $amount which equals $total<br/><br/> 
      You have just spent $total, your new balance is $newbalance <br/><br/>"); 

      ?> 

回答

1

你想要的是MySQL INSERT INTO ON DUPLICATE KEY UPDATE函数。

基本上是:

INSERT INTO ownedstocks values (...) ON DUPLICATE KEY UPDATE amount = amount + '$amount' 
+0

这工作奇迹,谢谢!但只有一次我添加了一个索引; CREATE UNIQUE INDEX user_stock ON ownedstocks(userid,stockid); 谢谢! – MalvEarp 2013-05-02 20:15:00

0

添加独特的(userstock_id):

ALTER TABLE `ownedstocks` ADD UNIQUE (
    `user` , 
    `stock_id` 
); 

然后做这样的事情:

INSERT INTO ownedstocks 
VALUES ('$user', '$id', '$amount') 
ON DUPLICATE KEY UPDATE 
`amount` = `amount` + '$amount';