0

JSP と MySQL で注文システムを作成しようとしています。誰かが私を助けてくれることを願っていました。

注文時に商品の在庫レベルを下げられるようにしたい。(つまり、9* 16GB USB フラッシュ ドライブが購入されます。注文が行われると、SQL クエリが現在のレベル 50 を取得し、注文額 9 を差し引いて、新しいレベル 41 でデータベースを更新します)。

この JSP を試しましたが、動作しません。

<sql:query var="stockresult" scope="request" dataSource="jdbc/project">
  SELECT *
  FROM stocklevels
  WHERE productID = $param.productID
</sql:query>

$newstocklevel = stockresult - $orderqty;


<sql:update var="newstock" scope="request" dataSource="jdbc/project">
  UPDATE stocklevels
  SET stock=$newstocklevel
  WHERE productID = $param.productID
</sql:update>

誰でも助けてもらえますか?

ありがとう

4

1 に答える 1

1

これは解決策になる可能性がありますが、要求パラメーターを SQL ステートメントに直接挿入しないことを強くお勧めします。

<sql:query var="stockresult" scope="request" dataSource="jdbc/project">
   SELECT stock <!-- select the current stock -->
   FROM stocklevels
   WHERE productID = $param.productID
</sql:query>

<!-- calculate the new value from the first row of the query result -->
<c:set var"newstocklevel" value="${stockresult.rows[0].stock - orderqty}"/> 


<sql:update var="newstock" scope="request" dataSource="jdbc/project">
   UPDATE stocklevels
   SET stock=$newstocklevel
   WHERE productID = $param.productID
</sql:query>
于 2013-03-28T17:52:34.470 に答える