0

ユーザーが商品を購入できるウェブサイトを作成しています。この Web サイトの管理者側を作成しました。管理者がログインすると、myphpadmin データベースで特定の製品の在庫レベルを更新できるページを作成しようとしています。これまでのところ、コードをデータベースで更新する段階に到達させることができましたが、選択した製品には到達しませんでした。代わりに、在庫レベルと価格で新しいレコードを作成します。以下のコマンドを使用して、前のページから製品 ID を取得しました。

echo "<input type=hidden name=h_prodid value=".$stockid.">";

したがって、管理者が更新リンクをクリックすると、その特定の製品の現在の詳細が記載されたページが表示されます。次に、この特定の製品を更新するために 1 つまたは 2 つの値を入力しますが、現在、既存のレコードを更新するのではなく、新しいレコードがデータベースに挿入されます。以下のコードを参照してください。

<?php

session_start();

include("db.php");

//create a variable called $pagename which contains the actual name of the page
$pagename="Product Update Confirmation";

//call in the style sheet called ystylesheet.css to format the page as defined in the style sheet
echo "<link rel=stylesheet type=text/css href=mystylesheet.css>";

//display window title
echo "<title>".$pagename."</title>";
//include head layout 
include("adminheadlayout.html");

//display the name of the site and the date dynamically. See uk.php.net
echo date ('l d F Y H:i:s');
echo "<p></p>";

include ("detectlogin.php");

//display name of the page
echo "<h2>".$pagename."</h2>";

//Capture the details entered in the form using the $_POST superglobal variable
//Store these details into a set of new variables
$newprice=$_POST['p_priceupdate'];
$newquantity=$_POST['p_quantityupdate'];
$prodid=$_POST['h_prodid'];

//If any of the variables is empty
if (!$newprice and !$newquantity)
{
echo "<br>Please enter a value for price and/or quantity ";
echo "<br>Go back to <a href=editstock.php>Edit Stock details</a>";
}
else
{
if (!$newprice or !$newquantity)
{
    //insert a new record in the order table to generate a new order number. 
    //store the id of the user who is placing the order as well as the current date and time
    $productupdateSQL="insert into Products (prodPrice, proQuantity, prodId)
    values ('".$newprice."', '".$newquantity."', '".$prodid."')";
    $exeproductupdateSQL=mysql_query($productupdateSQL);
    echo "<p strong>Stock level updated successfully!";
}

//if a database error is returned, display an order error message
else
{
echo "<p>Sorry there has been an error with your product update";
echo "Go back to <a href=editstock.php>Edit Stock Details</a>";
}
}
//include head layout
include("footlayout.html");
?>

どんなアイデアでも大歓迎です。私はほぼそこにいますが、この特定のタイプの問題に関連するものは何も見つかりません.

4

1 に答える 1

1

スクリプトには INSERT クエリのみが含まれ、UPDATE クエリは含まれていないため、既存のレコードは更新されません。

警告 コードは非常に安全ではなく、古い mysql_ 関数を使用しており、値をまったくエスケープしていません。したがって、このコードは SQL インジェクションに対して脆弱です。SQL インジェクションにより、プライベート データが公開され、データが失われる可能性があります。ここでそれについて読んでください: http://www.unixwiz.net/techtips/sql-injection.html

于 2013-02-03T21:37:39.230 に答える