PhP4.2 mysql4 に関して


mysqlのデータを削除する際に。
phpの配列を使ってmysql上のデータを削除しようと思います。

test.php
--------------------------
$newarr=array(0=>"太郎",1=>"はなこ",2=>"次郎")
$query="DELETE FROM rog WHERE name='".$newarr."'";
for($i=0;$i<count($newarr);$i++){
mysql_query($query)
or die("エラー");}
------------------------

上記がうまく作動しません。
何か間違いがありますでしょうか?
配列を使ったmysqlでの操作を教えてください。

どなたか詳しい方ご教授おねがいします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/06/08 10:14:37
  • 終了:2007/06/15 10:15:11

回答(3件)

id:battan No.1

battan回答回数63ベストアンサー獲得回数12007/06/08 11:24:32

ポイント60pt

配列はあくまでも配列として展開されます。

ですから、そのままではSQL文としては成立しません。

ですから、

--------------------------

$newarr=array(0=>"太郎",1=>"はなこ",2=>"次郎")

for($i=0;$i<count($newarr);$i++)</p>

{$query="DELETE FROM rog WHERE name='".$newarr[$i]."'";

mysql_query($query)

or die("エラー");}

------------------------

のように配列の回数分QUERYを実行するか、

--------------------------

$newarr=array(0=>"太郎",1=>"はなこ",2=>"次郎")

$query="DELETE FROM rog WHERE ";

for($i=0;$i<count($newarr);$i++)</p>

{$query .= "name='".$newarr[$i]."'";

if($i != count($newarr) - 1){

$query .= " or ";

}

}

mysql_query($query)

or die("エラー");}

------------------------

のように配列を展開してSQL文にしてやる必要があります。

上記の場合、結果的に実行されるSQL文は、

DELETE FROM rog WHERE name='太郎' or name='はなこ' or name='次郎';

となります。

http://dummy.co.jp

id:rrr3

--------------------------

$newarr=array(0=>"太郎",1=>"はなこ",2=>"次郎")

for($i=0;$i<count($newarr);$i++)</p>

{$query="DELETE FROM rog WHERE name='".$newarr[$i]."'";

mysql_query($query)

or die("エラー");}

------------------------

これをやろうと思います。

は何ですか?

2007/06/08 11:34:12
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912007/06/08 12:04:42

ポイント10pt

一回のクエリで実行すると

<?
    $newarr = array("'太郎'","'はなこ'","'次郎'");
    $query="DELETE FROM rog WHERE name IN (".implode(",", $newarr).");";
mysql_query($query)
?>

でもできるかと思います。

実際のクエリ文は、下記のものになります。

DELETE FROM rog WHERE name IN ('太郎','はなこ','次郎');

PHP implode

id:Yota No.3

Yota回答回数453ベストアンサー獲得回数282007/06/08 12:57:14

ポイント10pt

これについてはもう結論でているような感じですので、ポイントとかつけないでください。連絡したいことがあったので。

1181199297でPhP4.2 mysql4に関して「解説をおねがいできますか」と書いてありますが、たぶん回答回数使い切ったせいで書き込めません。

コメントいつも開けておいたほうがいいですよ。

http://q.hatena.ne.jp/1181199297

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません