mysql 带单引号吗_何时在MySQL中使用单引号,双引号和反引号

小编典典

反引号用于表和列标识符,但是仅当标识符是MySQL保留关键字时,或者当标识符包含空格字符或超出限制集的字符时才需要使用反引号(请参见下文)。通常建议避免使用保留关键字在可能的情况下用作列或表的标识符,从而避免引用问题。

单引号应用于VALUES()列表中的字符串值。MySQL还为字符串值支持双引号,但是单引号已被其他RDBMS广泛接受,因此使用单引号而不是双引号是一个好习惯。

MySQL还希望DATE和DATETIME文字值可以像字符串一样单引号'2001-01-01

00:00:00'。有关更多详细信息,请查阅日期和时间文字文档,尤其是-在日期字符串中使用连字符作为分段定界符的替代方法。

因此,使用您的示例,我将对PHP字符串加双引号,并在values上使用单引号'val1', 'val2'。

NULL是MySQL关键字,是一个特殊的(非)值,因此未加引号。

这些表或列标识符都不是保留字,也不使用需要引号的字符,但是无论如何我都用反引号将它们引号(稍后再说……)。

RDBMS的本机函数(例如,NOW()在MySQL中)不应被引用,尽管它们的参数要遵循已经提到的相同的字符串或标识符引用规则。

反引号(`)

表格和列────────┬──────┬──┬──┬──┬────┬──┬────┬──┬──┬────┬──┬ ────────┐

↓↓↓↓↓↓↓↓↓↓↓↓

$ query =“ **插入表中(id,col1,col2,date,updated)

值(NULL,'val1','val2','2001-01-01',NOW())** “;

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

未引用的关键字──────┴┴┴┘││││││││││││

单引号(')字符串────────────┴────┴──┴──────││││││││

单引号(')日期────────────┘││││ │

未引用的函数──────────────────┴┴┴┴┘

变量插补

变量的引用模式不会改变,尽管如果您打算直接在字符串中插入变量,则必须在PHP中将其双引号。只要确保您已正确转义了要在SQL中使用的变量即可。(建议使用支持预处理语句的API来防止SQL注入)。

//同一件事,但有一些变量替换

//这里,变量表名$ table用反引号引起来,并且变量

// VALUES列表中的单引号

$ query =“将 **INERT** 插入 **`$ table`** (`id`,`col1`,`col2`,`date`)值(NULL, **'$ val1'** , **'$ val2'** , **'$ date'** )”;

准备好的陈述

在使用准备好的语句时,请查阅文档以确定是否必须引用语句的占位符。PHP,PDO和MySQLi中最流行的API都希望使用无 引号的

占位符,其他语言中大多数准备好的语句API也是如此:

// PDO example with named parameters, unquoted

$query = "INSERT INTO `table` (`id`, `col1`, `col2`, `date`) VALUES (:id, :col1, :col2, :date)";

// MySQLi example with ? parameters, unquoted

$query = "INSERT INTO `table` (`id`, `col1`, `col2`, `date`) VALUES (?, ?, ?, ?)";

要求标识符中使用引号引起来的字符:

根据MySQL文档,您不需要使用以下字符集引用(反引号)标识符:

ASCII :([0-9,a-z,A-Z$_]基本拉丁字母,数字0-9,美元,下划线)

您可以使用超出设置范围的字符作为表或列标识符,例如,包括空格,但是 必须将其 引号(反引号)。

2020-05-17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值