0

まず、テーブルに値のリストを表示しています。私がやろうとしているのは、テーブルの一意のテーブルIDに基づいて削除ボタンを追加することです。

したがって、宣言したこのボタンを使用してデータベースから値を削除しようとしていますが、現時点で行っていることでは、データベースに何も削除されていません。

これは私のデータベーステーブルです

CREATE TABLE `5050goosedown` (
    `goosedown_id` int(11) unsigned NOT NULL auto_increment,
    `name` varchar(100) NOT NULL default '',  
    `width` int(8),
    `height` int(8),
    `normal_fill` int(8),
    `our_fill` int(8),
    `old_price` DECIMAL(3,2),
    `price` DECIMAL(3,2), 
    PRIMARY KEY  (`goosedown_id`)
    ) TYPE=MyISAM;

これは私のボタンで、この同じページをリロードするフォームの中にあります。

echo '<td><input type="submit" name="'.$row['goosedown_id'].'" value="Delete" /></td>"';

つまり、これは「削除」というボタンであり、その名前はそのテーブルの一意のIDです...(私が持っているいくつかの表の1つであり、これを実行したいと考えています)

次に、ページがリロードされると、押されている特定の削除ボタンをキャプチャするためのこのifステートメントがあります...これはATMで機能していません。

//DELETE QUERIES
if(isset($_POST['goosedown_id']) and is_numeric($_POST['goosedown_id']))
{
  // here comes your delete query: use $_POST['deleteItem'] as your id
  mysql_query("DELETE FROM 5050goosedown WHERE goosedown_id='goosedown_id'");
}
4

3 に答える 3

2

HTMLを次のように変更します。

echo '<td><form method="post" action=""><input type="hidden" name="goosedown_id" value="'.$row['goosedown_id'].'" /><input type="submit" name="sumbit" value="Delete" /></form></td>"';

およびスクリプト:

if(isset($_POST['goosedown_id']) and is_numeric($_POST['goosedown_id'])){
  mysql_query("DELETE FROM 5050goosedown WHERE goosedown_id=".(int)$_POST['goosedown_id']);
}

ID値がであるため、withsumbitボタンを渡さないDeleteでください。非表示フィールドを作成する必要があります。

于 2012-10-01T07:43:10.817 に答える
1

クエリで引用してはいけないので、次のようgoosedown_idに定義され ています。int(11) unsigned

"DELETE FROM 5050goosedown WHERE goosedown_id=$goosedown_id"
//                                            ^           ^ no quote

そしてもちろん、$goosedown_idはフォームから投稿された値です。

$goosedown_id = (int)$_POST['goosedown_id'];
//               ^^^ prevents SQL Injection

したがって、値を送信に含めることができないため、「偽の」投稿を行う必要があります。

<input type="hidden" name="goosedown_id" value="<?php echo $row['goosedown_id'] ?>" />

これを完全なphp文字列として記述することもできます。

<?php echo '<input type="hidden" name="goosedown_id" value="' . $row['goosedown_id'] . '" /> ?>
于 2012-10-01T07:42:49.647 に答える
0

代わりに次のクエリを試してください。

mysql_query("DELETE FROM 5050goosedown WHERE goosedown_id=".mysql_real_escape_string($_POST'goosedown_id'));

また、ボタンが実際にformwithの中にあることを確認してmethod="post"ください。

于 2012-10-01T07:45:32.077 に答える