(PHP関連)データベース上に aaa というカラムと bbb というカラムがあります。


aaaにはランダムな文字数で生成された値がはいっており bbb は初め 5 という値が入っています。

ss.php?aaa=(ランダムな文字数)でアクセスするとss.phpはカラムaaaを確かめ同一のレコードにあるbbbカラムを確かめます。ここに5が入っていれば8にUPDATEし、8が初めから入っていたらエラーメッセージなどを表示しデータベース操作はしないようにしたいと思っています。

このような場合どのようなソースになるでしょうか?よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/12/21 23:01:32
  • 終了:--

回答(3件)

id:hoge_systemz No.1

hoge_systemz回答回数23ベストアンサー獲得回数02005/12/21 23:36:02

ポイント30pt

URLはダミーです。

勝手ながらmysqlという前提で。

回りくどい書き方かもしれませんが。


//事前にDB接続、DB選択しておく


if($_GET[’aaa’]){//$_GET[’aaa’]という変数が有る場合


$sql = ”select * from TABLE_NAME where `aaa` = {$_GET[’aaa’]}”;

$result = mysql_query($sql);

$rows = mysql_num_rows($result);


if($rows == 1){//「aaaがランダム」なレコードが一つであれば(照合する)

while ($row = @mysql_fetch_array($result)){


if($row[’bbb’] == 5){//bbbが5だったら

$sql = ”update TABLE_NAME set `bbb` = 8”;//8にする

mysql_query($sql);//sql実行

$msg = ”8に更新しますた”;//完了メッセージ

}


if($row[’bbb’] == 8){//bbbが8だったら

$msg = ”8が最初から入っています”;//エラーメッセージ

}

echo $msg;//メッセージ表示

}

}

}

id:esecua

なるほど、ありがとうございました。

・もしaaaの値自体がデータベース内になかった場合、どのようにしてエラーメッセージを出せばいいのでしょうか?

2005/12/22 07:47:10
id:ito-yu No.2

ito-yu回答回数323ベストアンサー獲得回数142005/12/22 00:35:27

ポイント1pt

http://e-words.jp/w/E4BE8BE5A496E587A6E79086.html

例外処理とは 【exception handling】 ─ 意味・解説 : IT用語辞典 e-Words

テーブル名がわからないので(後略

テーブル名をtblとします。

query($sql)という関数で$sqlを実行し、SELECTであればデータベースからレコードを取得できるものとします。

$aaa = $_GET[’aaa’];

$sql = ”SELECT * FROM tbl WHERE aaa=’{$aaa}’”;

$row = query($sql);

if($row[’aaa’] != $aaa){

//aaaが存在しない時の処理

}elseif($row[’bbb’] == 8){

//エラーメッセージ出力

}elseif($row[’bbb’] == 5){

$sql = ”UPDATE tbl SET bbb=8 WHERE aaa=’{$aaa}’”;

query($sql);

}else{

//bbbが5でも8でもないときの処理

}


※常に想定外の入力がある可能性を考えて例外処理を実装しましょう。

id:esecua

ありがとうございます。

2005/12/22 07:47:55
id:hoge_systemz No.3

hoge_systemz回答回数23ベストアンサー獲得回数02005/12/22 11:22:34

ポイント29pt

URLはダミーです。


aaaの値が存在しない場合はこんな感じですね。

aaaに入ってるランダムな値と適合するレコードは多くても一つで、一つも適合しなかった場合のエラーメッセージを加えます。

加えてランダムな値がだぶってしまった時のエラーメッセージも加えておきます。


//事前にDB接続、DB選択しておく


if($_GET[’aaa’]){//$_GET[’aaa’]という変数が有る場合


$sql = ”select * from TABLE_NAME where `aaa` = {$_GET[’aaa’]}”;

$result = mysql_query($sql);

$rows = mysql_num_rows($result);


if($rows == 1){//「aaaがランダム」なレコードが一つであれば(照合する)

while ($row = @mysql_fetch_array($result)){


if($row[’bbb’] == 5){//bbbが5だったら

$sql = ”update TABLE_NAME set `bbb` = 8”;//8にする

mysql_query($sql);//sql実行

$msg = ”8に更新しますた”;//完了メッセージ

}


if($row[’bbb’] == 8){//bbbが8だったら

$msg = ”8が最初から入っています”;//エラーメッセージ

}

echo $msg;//メッセージ表示

}

}elseif($rows < 1){//「aaaがランダム」なレコードが一つも無い場合(照合する)

echo ”一つも適合しません”;

}else{//「aaaがランダム」なレコードが一つ以上の場合(ありえない?)

echo ”適合するデータが複数あるよ!”;

}

}

id:esecua

ご回答ありがとうございました。

2005/12/22 17:33:58

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

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

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

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

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