0

私はphpとmysqlにまったく慣れていないので、これが完全に間違っている場合はご容赦ください。私は印刷バランス アプリケーションを作成しています。以下のコードはその一部です。

$command="SELECT itemname FROM items";
$results = mysql_query($command);
while($row = mysql_fetch_assoc($results))
{
    foreach ($row as $key => $value) {
            print "<input type='radio' name='itemtype' value='$value'>".$value."</input><br />";
    }
}

これはおそらく、ユーザーが SHORT BOND PAPER と LONG BOND PAPER (items の列 itemname) のどちらかを選択する価格印刷フォームです。オプションはラジオ ボタンとして表示されます。それは機能しますが、それぞれの行に挿入された価格を取得できるという問題に悩まされています。itemname とその価格はすべてユーザーがデータベースに入力するため、特定の価格をコード自体に宣言することは想定されておらず、データベースから取得できるはずです。後でページ数を掛けたときに印刷の価格を計算するためにこれを行う必要があるため、ユーザーが送信をクリックすると、ユーザーが選択したアイテムに基づいて価格を取得できるようにしたいと考えています。

間違いなく可能だと思いますが、どうすればよいかわかりません。理論的には、SELECT itememprice FROM items WHERE itemname = $value の行に沿ったものになりますが、そのようには機能しないと思います。


ソリューションの編集: 参照用の完全なソリューションは次のとおりです。$compute は機能するかどうかをテストするための単なるサンプルですが、5 は入力されるページのサンプル数です。

if ($command = mysql_query("SELECT `itemprice` FROM `items` WHERE `itemname` LIKE '" . mysql_escape_string($_POST['itemtype']) . "'"))
{
while($row = mysql_fetch_assoc($command))
{
$compute = $row['itemprice'] * 5;
echo $compute;
}
}
else
{
echo (mysql_error ());
}
4

1 に答える 1

0

まさしくそのようなものでしょう。

SELECT itemprice FROM items WHERE itemname = $_POST['itemtype']

itememprice が価格の実際の列であると仮定します。ただし、このようにすると、コードが mysql インジェクションに対して脆弱になります。したがって、続行する前に、少し読んでみてください。

于 2013-10-17T18:26:27.823 に答える