首先*(星号)在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";
解法一就失效了。
因为 * 放在后面就不能用了。

相关文章:

  • 2021-08-04
  • 2021-11-15
  • 2022-01-09
  • 2021-10-17
  • 2019-03-07
  • 2021-11-17
  • 2021-11-27
猜你喜欢
  • 2021-12-27
  • 2022-12-23
  • 2021-07-23
  • 2022-12-23
  • 2021-07-14
  • 2022-01-12
  • 2021-07-23
相关资源
相似解决方案