zoukankan      html  css  js  c++  java
  • 1.7.2.4'-'作为注释的开始

    标准SQL使用C语法/* this is a comment */进行注释,而MySQL Server也支持该语法。MySQL还支持对此语法的扩展,如第9.6节“注释语法”中所述,该扩展使特定于MySQL的SQL能够嵌入到注释中

    标准SQL使用“ --作为开始注释序列。MySQL Server # 用作开始注释字符。MySQL Server还支持--注释样式的变体也就是说,--开始注释序列后必须跟一个空格(或一个控制字符,例如换行符)。需要该空间来防止使用以下结构的自动生成的SQL查询出现问题,在该结构中我们自动为插入付款值payment

     
    UPDATE account SET credit=credit-payment

    考虑一下如果payment值为负,会发生什么情况-1

    UPDATE account SET credit=credit--1

    credit--1是SQL中的有效表达式,但 --被解释为注释的开始,部分表达式被丢弃。结果是一条语句,其含义与预期的完全不同:

    UPDATE account SET credit=credit

    该声明根本不会改变价值。这说明,允许以开头的注释 --会产生严重的后果。

    使用我们的实现时,必须在后面加上一个空格, --以便在MySQL Server中将其识别为开始注释序列。因此, credit--1使用安全。

    另一个安全的功能是mysql 命令行客户端忽略以开头的行 --

     

  • 相关阅读:
    webservice
    AppDomain (转)
    Apache和Nginx防盗链的几种配置方法
    优化PHP代码的40条建议
    file_get_contents无法请求https连接的解决方法
    PHP SPL
    Ubuntu 查看系统信息
    PHP导出Excel
    mysql集群
    配置yum源的两种方法
  • 原文地址:https://www.cnblogs.com/owlin/p/13729205.html
Copyright © 2011-2022 走看看