人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

●質問者: esecua
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:AAA PHP ss かめ アクセス
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● hoge_systemz
●30ポイント

http://www.hatena.ne.jp/

はてな

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;//メッセージ表示

}

}

}

◎質問者からの返答

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

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


2 ● ito-yu
●1ポイント

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でもないときの処理

}


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

◎質問者からの返答

ありがとうございます。


3 ● hoge_systemz
●29ポイント

http://del.icio.us/

del.icio.us

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 ”適合するデータが複数あるよ!”;

}

}

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ