アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHP version 4.4.4を使用しています。

テーブルの中に下記のデータがあるとします。

cID uname      mls
2 abc@abc.com 1234567896
2 abc@abc.com 1234567894
2 abc@abc.com 1234567892
1 test@test.com 1234567892


インターネットで色々調べたのを元に
コードを作成したのですが、Submitボタンを押すと
チェックボックスに選択されたレコードは削除されず、
1つ新たなレコードをデータに入力されてしまいます。

<例えば>
cID:2、uname:abc@abc.com、で絞ったデータの中から
1234567894、と 1234567892 を削除しようとすると、
選択されたデータは削除されず、
下記のように新たなデータが1つインサートされます。


cID uname mls
2 abc@abc.com 0


それをした後だと、更新ボタン(ページがリロード)をクリックする度に
新たなデータが又1つインサートされます。

何方かこの問題を解決して頂けるととても助かります。
どうぞ宜しく御願いします。

フォームは下記の通りです。

<form action="<?=$_SERVER['PHP_SELF'] ?>" method="post">
<INPUT type="checkbox" name="id[]" value="<?=$mls?>">
<input type="submit" name="submit" value="Delete selected">
</form>


使用してるコードは下記の通りです。

//配列に入っている?
if( is_array( $_REQUEST['id'] ) ){

//更新のあった行数
$cnt = 0;

//配列の分だけSQL
foreach( $_REQUEST['id'] as $myid ){

//エスケープ
$myid = intval( mysql_escape_string( $myid ) );

$sql = "DELETE FROM $table2 WHERE cID='$session[cID]' AND id = '{$myid}' LIMIT 1 ; ";
$result = mysql_query( $sql );

//更新のあった分だけ足す
if( $result ){
$cnt += mysql_affected_rows();
}
}
echo "{$cnt}行が削除されました。";
}

A 回答 (1件)

>1つ新たなレコードをデータに入力されてしまいます。



DELETE文でレコードが追加されることはありません。
全体像が見えないのでなんともいえませんが、
おそらくフロー制御がわるく、追加や更新のルーチンが作動しているのでは?

とりあえずは$sqlをprintしてみてデバッグするとよいのでは?
    • good
    • 0
この回答へのお礼

yambejpさま、

御回答を頂きどうも有難うございます。

「DELETE文でレコードが追加されることはありません。」というのを
聞いて、
確かに・・・っと、それがきっかけで
何故そうなるのかやっと問題を解決しました。

Delete文をInsert文の後に入れてたのが問題でした。

どうも有難うございました。

お礼日時:2008/04/14 01:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!