机がある
mysql> select * from people;
ID | セックス | 名前 |
---|---|---|
1 | 남자 | 김준영</td> |
2 | 남자 | 박민수</td> |
3 | 여자 | 김영지 |
4 | 남자 | 이준수</td> |
5 | 남자 | 구준표</td> |
6 | 여자 | 이윤지 |
7 | 여자 | 이혜리</td> |
8 | 여자 | 권아영</td> |
9 | 여자 | 김예지 |
10 | 남자 | 이준필</td> |
セットで 10 行 (0.00 秒)
mysql> select * from people where 0 and (select 1 union select 2);
Empty set (0.00 sec)
mysql> select * from people where id=50 and (select 1 union select 2);
ERROR 1242 (21000): Subquery returns more than 1 row
SQL インジェクションの問題を解決しています。最初のケースでは、'0 and' が既に false であるため、(select~) コマンドは実行されません。
私は「論理演算子の短絡」を知っています
id=50 の列がありませんが、以下の場合にエラーが発生するのはなぜですか?