📜  mysql aspas simples - SQL (1)

📅  最后修改于: 2023-12-03 15:33:01.307000             🧑  作者: Mango

MySQL单引号的使用

在MySQL中,单引号常用来表示字符串值。在使用MySQL时,适当的使用单引号能够方便我们进行字符串的比较、替换、插入等等操作,但过度或不当使用单引号会导致不必要的错误。

语法

在MySQL中,单引号用于表示字符串值。语法如下:

SELECT * FROM mytable WHERE name = 'John Doe';

在更新、插入或替换字符串操作时,同样使用单引号表示,语法如下:

UPDATE mytable SET column_1 = 'new value' WHERE id = 1;
INSERT INTO mytable (column_1, column_2) VALUES ('value 1', 'value 2');

当然,在一些特殊的情况下,我们也可以使用相应的转义字符来插入单引号。

注意事项
区别大小写

尽管在大多数情况下,MySQL不会区分引号的大小写。但是,在某些情况下,它实际上是会区分的,这时一定要注意引号大小写的问题。比如,使用以下语句时:

SELECT * FROM mytable WHERE name = 'John Doe';

如果实际上数据库中的记录为“john doe”,那么查询将无法获得任何结果。在这种情况下,可以使用以下语法来完成不区分大小写的查询:

SELECT * FROM mytable WHERE LOWER(name) = 'john doe';
与双引号的使用

在一些MySQL驱动程序中,双引号也可以用来表示字符串值,但是,在MySQL中,它们与单引号并不相等。在使用时,应该明确自己的实际需要,并选择合适的引号进行使用。

SQL注入

使用单引号时,我们需要注意SQL注入的问题。如果我们在查询中使用了不恰当的输入过滤,攻击者就可能通过查询来进行SQL注入攻击。要防止这种情况的发生,我们应该使用预编译语句或ORM框架。如果我们确实需要手动构造查询,应该使用MySQL的转义函数来转义任何用户输入的值。

// 使用预编译语句
$stmt = $pdo->prepare("SELECT * FROM mytable WHERE name = ?");
$stmt->execute([$name]);

// 使用ORM框架
$results = MyTable::where('name', $name)->get();

// 手动构造查询,使用MySQL的转义函数
$name = mysqli_real_escape_string($con, $name);
$sql = "SELECT * FROM mytable WHERE name = '{$name}'";
总结

使用单引号是MySQL中常见的字符串值表示方法。合理、适当的使用单引号可以帮助我们进行各种字符串操作,但过度或不当使用会引发不必要的错误。在使用时,需要格外注意区分大小写、注入等问题。