以下のテーブルを使用しています。
MariaDB [security]> SELECT * FROM users; +----+----------+------------+ | id | username | password | +----+----------+------------+ | 1 | Dumb | Dumb | | 2 | Angelina | I-kill-you | | 3 | Dummy | p@ssword | | 4 | secure | crappy | | 5 | stupid | stupidity | | 6 | superman | genious | | 7 | batman | mob!le | | 8 | admin | admin | | 9 | admin1 | admin1 | | 10 | admin2 | admin2 | | 11 | admin3 | admin3 | | 12 | dhakkan | dumbo | | 14 | admin4 | admin4 | +----+----------+------------+ 13 rows in set (0.000 sec)
idを指定すると、正しく動きます。
MariaDB [security]> SELECT * FROM users WHERE id='3' LIMIT 0,1; +----+----------+----------+ | id | username | password | +----+----------+----------+ | 3 | Dummy | p@ssword | +----+----------+----------+ 1 row in set (0.000 sec)
where以降をコメントアウトすると、テーブル内のすべての列が表示されます。
MariaDB [security]> SELECT * FROM users -- - WHERE id='3' LIMIT 0,1; -> ; +----+----------+------------+ | id | username | password | +----+----------+------------+ | 1 | Dumb | Dumb | | 2 | Angelina | I-kill-you | | 3 | Dummy | p@ssword | | 4 | secure | crappy | | 5 | stupid | stupidity | | 6 | superman | genious | | 7 | batman | mob!le | | 8 | admin | admin | | 9 | admin1 | admin1 | | 10 | admin2 | admin2 | | 11 | admin3 | admin3 | | 12 | dhakkan | dumbo | | 14 | admin4 | admin4 | +----+----------+------------+ 13 rows in set (0.000 sec)
次のクエリについて教えていただきたいです。
MariaDB [security]> SELECT * FROM users WHERE id='3 -- -' LIMIT 0,1; +----+----------+----------+ | id | username | password | +----+----------+----------+ | 3 | Dummy | p@ssword | +----+----------+----------+ 1 row in set, 1 warning (0.000 sec)
idの右辺にコメントを入れたのですが、
SELECT * FROM users WHERE id='3' LIMIT 0,1; と同じ結果になります。
なぜこの出力になるのか、教えてください。
追記です。
以下のクエリだと出力されません。
MariaDB [security]> SELECT * FROM users WHERE id='-- - 3' LIMIT 0,1; Empty set (0.000 sec)
0 コメント