0

机がある

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 の列がありませんが、以下の場合にエラーが発生するのはなぜですか?

4

2 に答える 2