为什么select * || flag from flag 不行呢?

首先*(星号)在SQL语句中有特殊的意义。应该是保留字或关键字 (没找到*(星号)属于什么) 。
所以你直接使用 select * || flag from flag 会报语法错误。

实验一:

这是一张表
为什么select * || flag from flag 不行呢?
查询语句 SELECT *||mpassword FROM rjqm.manager; 结果:为什么select * || flag from flag 不行呢?

和查询语句 SELECT .||mpassword FROM rjqm.manager; 结果是一样的:

为什么select * || flag from flag 不行呢?
都是报语法错误。

实验二

如果用 ``(反引号) 将 *(星号)引起来就不会报语法错误。而是报没有找到 * 这一列。

``(反引号) 是为了区分MYSQL的保留字与普通字符而引入的符号。
为什么select * || flag from flag 不行呢?

而且,||是逻辑运算符。

|| 具体语法规则为:
当两个操作数都为非 NULL 值时,如果有任意一个操作数为非零值,则返回值为 1,否则结果为 0;
当有一个操作数为NULL 时,如果另一个操作数为非零值,则返回值为 1,否则结果为NULL;
假如两个操作数均为 NULL 时,则返回值为 NULL。

这也是为什么你在输入框中输入任何数字都会返回1,因为他进行了运算。
而你在输入框中输入任何非数字,都不会有反应。因为报错了。

另:

如果这道题后台查询语句改为
sql=“select flag||”.post[‘query’]." from Flag";
解法一就失效了。
因为 * 放在后面就不能用了。