【初歩】SELECT文で思うような照会結果が得られない

このQ&Aのポイント
  • テーブルMYTABLEに、EMAILとPWというフィールドに、それぞれ、name@example.jp、x6wvGZb7MZpBwMtQという文字列がINSERTされています。
  • SELECT * FROM MYTABLE WHERE EMAIL = 'name@example.jp' AND PW = 'x6wvGZb7MZpBwMtQ'を実行しても、レコードが返ってこないのですが、なぜでしょうか。
  • シンプルな話なので、はじめはSQL文を手打ちしていてダメでした。なので、phpMyAdminのGUIからSQL文を発行してみたら一字一句同じSQL文が吐き出されましたし、照会結果も同じでした。
回答を見る
  • ベストアンサー

【初歩】SELECT文で思うような照会結果が得られない

テーブル MYTABLEに、EMAILとPWというフィールドに、それぞれ、 name@example.jp、x6wvGZb7MZpBwMtQという文字列がINSERTされています。 これに対し、 SELECT * FROM `MYTABLE` WHERE `EMAIL` = 'name@example.jp' AND `PW` = 'x6wvGZb7MZpBwMtQ' を実行しても、レコードが返ってこないのですが、なぜでしょうか。 なお、 SELECT * FROM `MYTABLE` WHERE `EMAIL` = 'name@example.jp' なら1件返ってきますが、 SELECT * FROM `MYTABLE` WHERE `PW` = 'x6wvGZb7MZpBwMtQ' だと返ってきません。 シンプルな話なので、はじめはSQL文を手打ちしていてダメでした。 なので、phpMyAdminのGUIからSQL文を発行してみたら 一字一句同じSQL文が吐き出されましたし、照会結果も同じでした。

  • MySQL
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

PWの値に余計なスペースとかそういうのが入っているんのでは? `PW` LIKE '%x6wvGZb7MZpBwMtQ%' とやってみてヒットすれば、たぶんそうなので PWの値を修正してください

litton101
質問者

お礼

yamabejpさん、いつもお世話になっています。 (プログラミング関係はあまり出入りしないので かなりお久しぶりにお世話になりましたが) >スペースとかそういうのが入っているんのでは そんなまさかと思っていたのですが、 よく確認したら改行記号がINSERTされていました。 ここの一番下にある http://www.stackasterisk.jp/tech/php/php03_08.jsp >print makePassword(PASSWORD_LEN) . "\n"; を $authcode = print makePassword(PASSWORD_LEN) . "\n"; みたいに流用していたものですから。 すばらしいアドバイスありがとうございました。

関連するQ&A

  • 【初歩】 SELECT文で意図した照会結果が得られない。NULLの扱いは?

    var1 var2 ------------- abc  null ------------- abc  null ------------- abc  null ------------- のようになっているテーブルに対して、 (1) select * from mytable where var1 = 'abc' (2) select * from mytable where var1 = 'abc' and var2 is null などとやれば、3件全部照会できますが、 (3) select * from mytable where var1 = 'abc' and var2 != '1' (4) select * from mytable where var1 = 'abc' and var2 != 1 とやっても1件も出てこないのですが、なぜでしょうか? 「NULLだって1ではない」わけだから、3件照会できてくれないと 困るのですが・・・

    • ベストアンサー
    • MySQL
  • [初歩] はじめの2文字を切り取って真偽を判定するWHERE文

    例えば、テーブル:MYTABLE、カラム:CITYに、 横浜市緑区.... 川崎市宮前区... 藤沢市辻堂... …などと登録されているとします。ここで、SQL文で (1) はじめの全角2文字が「横浜」である (2) はじめの全角2文字が「横浜」でない(横浜以外) というWHERE条件をそれぞれ作りたいのですが。phpMyAdminで: (1) SELECT CITY FROM MYTABLE WHERE SUBSTRING( MYTABLE.CITY, 0, 4 ) = '横浜' ) (2) SELECT CITY FROM MYTABLE WHERE SUBSTRING( MYTABLE.CITY, 0, 4 ) != '横浜' ) などと実行してみたら、 #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ') LIMIT 0, 30' at line 1 などとエラーになります。何が誤っていますでしょうか?

    • ベストアンサー
    • MySQL
  • 副照会を簡単に使いまわせますか?

    たとえば、次のSQLがあったとして、 select キー1, キー2, sum(金額) (  select A.キー1 , A.キー2 , A.金額   from (select * from ~ where ...) A  union all  select '' , A.キー2 , A.金額   from (select * from ~ where ...) A  union all  select A.キー1 , '' , A.金額   from (select * from ~ where ...) A  union all  select ''   , '' , A.金額   from (select * from ~ where ...) A ) group by キー1, キー2 一番内側の副照会は、 (select * from ~ where ...) A は、4箇所とも同じSQL文で、とても長いのですが 2箇所目以降は、1箇所目と同じSQL文ということで 記述を省けたりするような構文があったりしないでしょうか? そこを、ビューにしろといわれるとその通りなのですが ビューにしたくないです。(プログラムで動的にここの副照会部分を パラメータに応じて作っているので、ビューにするとビューがいくつも できて、きりがない) Oracle9iで、利用しています。

  • php上でSQL文を実行した結果と、phpMyAdminで実行した結果が違う

    ☆実行環境 php5.3 MySQL4.0 $sql="SELECT * FROM テーブル名 WHERE フィールド名 like '".$変数."%'" php上で上記のようなSQL文を実行させようとしています。 テーブルには該当する行がいくつかあるのですが、ページ上では1行も表示してくれません。 mysql_num_rowsの返り値を見ると0になっています。 SQL文の組み立てがおかしいのかと思い、phpMyAdmin上でSQL文を実行すると、 きちんと欲しい内容が表示されます。 とするとphpでのSQL文の書き方がおかしいのだと思います。 どこかおかしいのかご教授ください。

    • ベストアンサー
    • PHP
  • like文の書き方を教えてください。

    テキストボックスを作成して入力した値がデータベースに 格納されている場合表示されるSQL文を書いていますが syntaxエラーになってしまい原因がわかりません。 String name = request.getParameter("name"); //入力された名前 String sql = new String(); <%-- SQL文 --%> sql += " select * from data "; sql += " where name "; sql += " like" + "('%" + s_name + "%')"; sql += " ) "; <input type="text" name="name" value=""> //textBox エラー表示 8番目: SQL = select * from data where name like('%i%') ) 9番目: ResultSetに格納失敗 : java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1  となってしまいます。 コマンドプロンプト上で select * from data where name like('%itou%'); この場合はちゃんと表示されます。 お分かりになる方よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • まったく別のテーブルの結果MYSQL

    table_1 id name age table_2 id book title city day SELECT * FROM table_1 WHERE id=? SELECT book,title FROM table_2 WHERE city=? このようにまったく別のテーブル カラム数も違う WHEREの?も違う これを一つのSQL文にまとめたいのですが。 UNIONなどを使ってもうまくいきませんでした。 ご教授お願いいたします。

    • ベストアンサー
    • MySQL
  • SQL文について質問させて頂きます。

    いつもお世話になっております。いろいろSQL文の本を読んだのですがわからないので今回もよろしく お願い致します。 SELECT DISTINCT * FROM bukken WHERE (id IN (SELECT fid FROM fudou_kodawari WHERE kid IN (1,4))) というSQL文があるのですが、これだと1,4が1つでも含まれるリストが出てくるのですが1,4が完全に一致しないと出てこないようにするにはどのようにSQL文を変更すれば良いのでしょうか? 何卒よろしくお願い致します。

  • 重複をせずに2つのフィールドを取得

    id name points ----------- 1 aa 20 2 bb 10 3 bb 20 4 cc 10 5 bb 30 このデータベースから、nameの重複を避けて、pointsの最大値を取得して name points ----------- aa 20 bb 30 cc 10 を得たくて select distinct name points from mytable where id > 0 order by name を思いつきましたが、これではだめでした。 SQL文を教えてください。

  • 同じSQL文で速度がだいぶ違う

    10万件程度レコードをもつ2つのテーブルに対し、下記のようなSQL文を実行します。 (実際のSQL文とは違いますが、だいたいこんな感じです。) SELECT * FROM aaa JOIN bbb USING(key) WHERE ORDER BY ccc LIMIT 50 OFFSET 5000 すると、 CGIから実行→CPU使用率が一時的に60%を超える。1~2秒待たされる。 phpMyAdminから同じSQL文を実行→CPUほどんど消費せず。瞬時に終わる。 のようにCGIからとphpMyAdminからで速度に大きな違いがあります。 こんなに差が付いてしまう理由がわかりましたら教えていただきたく。

    • ベストアンサー
    • MySQL
  • SQL文でWhere+orを使う理由

    ItemsテーブルからValueにAという値かBという値を持ってる人のNameを取得するSQL文について調べたのですが、以下のようになってました。 SELECT Name FROM Items WHERE Value IN ('A', 'B') これで動く結果については納得できたのですが、ORを使っても良いのではないでしょうか。以下のようなやり方は出来ないのかと思ったのですが SELECT Name FROM Items WHERE Value = 'A' or 'B' のように=(イコール)の後の値にorをつけるという書き方は見当たりませんでした。これで動かない場合、以下の方法なら動くはずだと思います。 SELECT Name FROM Items WHERE Value = 'A' or Value = 'B' おそらく結果はINを使った場合と同じだと思うのですが、これはどのようにして使い分けられているのでしょうか?文の短さで言えば値が複数の場合はINの方がはるかに短くなってスマートですが、単数でもINの方が短く済みそうな気がします。INの後のカッコ内に更にSQL文を書くことも出来ますし、Where+orの意義がよく分からなくなってきました。