質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

2387閲覧

form入力した値とdbのカラムにある値が合致したら削除させたいのですが、書き方がわかりません。

退会済みユーザー

退会済みユーザー

総合スコア0

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2016/06/28 04:22

go言語です。
formから入力された値が、データベースにあるものと合致した場合に削除し合わない場合はもう一度その画面に戻すということをしたいのですが、どう比較したらよいかわからず困っています。

dbはmysqlとgorpを使っています。
if err !=nilあたりで、比較できればと思うのですが、力量がたらず、わからず仕舞いなので...
どなたかご教授ください。
よろしくお願いします。

func signout(w http.ResponseWriter, r *http.Request) { log.Println("signout") if r.Method == "GET" { t, _ := template.ParseFiles("tmp/signout.html") t.Execute(w, nil) } else { r.ParseForm() dbmap := InitDb() defer dbmap.Db.Close() UserName, Password := r.Form["UserName"][0], r.Form["Password"][0] _, err := dbmap.Exec("delete from Account where UserName=? AND Password=?", UserName, Password) if err != nil { checkErr(err, "not delete") } else { log.Println("delete!") http.Redirect(w, r, "/thanks", http.StatusOK) } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

使用されているDBの操作オブジェクトが不明なので適切な回答ではないかもしれませんが。。。

delete文の実行結果で判断するのではなく、画面から入力された内容でクエリー(select count(*) など)を発行し、0件だった場合は存在しないと判断すればいかがでしょうか。

sql

1select count(*) from Account where UserName=? AND Password=?

投稿2016/06/29 05:37

shanxia

総合スコア1038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/06/30 04:16 編集

ログインや削除処理をする際に、マッチしたものでしかログインできなかったり削除できないといった形にしたいと考えているのですが... 初歩的な質問で申し訳ありません。 入力した人の要素とdbに登録している要素の比較で登録処理に移行させるか、削除はできません、入力しなおしですといった形にできるかがわからなくて...
shanxia

2016/06/30 04:29

ログイン処理であれば、ユーザー名とパスワードを条件文にするのではなく、ユーザー名だけでクエリーを発行してから、パスワードやユーザーの有効期限をチェックするのが普通です。(パスワードを平文で保存しないので) なのでログイン処理と削除処理は、あまり共通にはなりません。 削除処理の場合は、次の様な順序になるのでは無いでしょうか。 1.select count(*)で、条件にマッチするレコードが存在することを確認 2.1の結果、見つからなかったら、入力し直しと返す。 3.1の結果、見つかれば同じ条件でdelete処理に移行する。
退会済みユーザー

退会済みユーザー

2016/06/30 05:27

そうなんですね。 全くわかっていない状態でした。 ご丁寧にありがとうございます。 試してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問