-1

私はPHPを初めて使用するので、ばかげているように聞こえるかもしれません。

私はデータベースを更新しようとしています。これはこれまでの私のコードです。

$pulldown = CleanUserInput($_GET['q']);
$name = CleanUserInput($_POST['name']);

$result = mysql_query("UPDATE Suppliers SET SuppName = ('$name') 
WHERE SuppName = ('$pulldown')");

$ _GETを使用して、更新する列を設定するにはどうすればよいですか?

4

4 に答える 4

1

フォームにが<form method="post">あり、<input>(または<select>)要素の1つにname="q'属性がある場合、それはで$_POSTはなく、にあり$_GETます。フォームの属性のURLにクエリ文字列を追加することGETでフォームを混在させることは技術的には可能ですが、ここでやろうとしていることは疑わしいです。POSTaction

補足として、あなたのコードはSQLインジェクションに対して脆弱に見えます。代わりに、パラメータ化されたクエリを使用する必要があります。

于 2012-06-07T18:22:20.953 に答える
1

変数がこのスクリプトに正しく渡されていると仮定すると、スクリプトの 3 行目は次のようになります。

$result = mysql_query("UPDATE Suppliers SET SuppName = '".$name."' WHERE SuppName = '".$pulldown."';") or die(mysql_error());

$_GET 変数を介して更新される列名を設定するには、コードは次のようになります。

$pulldown = CleanUserInput($_GET['q']);
$name = CleanUserInput($_POST['name']);
$column_name = CleanUserInput($_GET['column_name']);
$result = mysql_query("UPDATE Suppliers SET `".$column_name."` = '".$name."' WHERE `".$column_name."` = '".$pulldown."';") or die(mysql_error());

もちろん、これは変数の列の値を置き換えます$column_name。それがあなたがやろうとしていることかどうかはわかりません。

于 2012-06-07T18:21:27.910 に答える
0
$result = mysql_query("UPDATE Suppliers SET SuppName = '{$name}' 
WHERE SuppName = '{$pulldown}'");

このクエリを使用してください。コードに構文エラーがあります

于 2012-06-07T18:39:41.383 に答える
0

短い答え:

$column = CleanUserInput($_POST['column']);
$result = mysql_query("UPDATE Suppliers SET $column = '$name' WHERE SuppName = '$pulldown'");

ただし、SQLインジェクションの問題がないことを確認する必要があります。CleanUserInputがそれからあなたを救うことを確認してください!

于 2012-06-07T18:21:56.040 に答える