gpt4 book ai didi

mysql - 如何在mysql查询中正确格式化引号和双引号

转载 作者:行者123 更新时间:2023-11-28 23:14:16 26 4
gpt4 key购买 nike

我目前正在使用 PDO 连接来执行一些 mysql 查询,因为我使用命令 $conn->prepare("HERE THE QUERY") 我想知道如何格式化引号等字符和双引号。

当我遇到这样的情况时:

$conn->prepare("SELECT * FROM ('SELECT DISTINCT (user_id) FROM table1')");

这很好,因为在嵌套的 SELECT 中没有特定字符会导致问题。但是我们如何处理这样的特殊情况呢?

这里有一个奇怪的例子(忘记 mysql.. 这是非常无关紧要的,关注引号的情况)在嵌套的 SELECT 中有引号和双引号:

$conn->prepare("SELECT * FROM ('SELECT user_id, CONCAT('[\"",GROUP_CONCAT(DISTINCT(cat) ORDER BY user_id DESC SEPARATOR "\",\""),"\"]') cat_grouped FROM table_1') select1");

根据这个示例查询,正确的引号语法应该是什么?如果我在准备查询时使用 ' 而不是 " ,问题就完全解决了,但我想了解是否有一种聪明的方法来维护双引号。

最佳答案

首先我建议使用单引号 - 它们更快 :D

主要问题是彼此使用相同的引号。这样做会导致过早关闭,我相信您希望避免这种过早的尴尬。

简单的看:

"string has star"ted"

如您所见,文件到达的第一个双引号是星号之后的那个。这将关闭星号后的字符串,从而使 ted" 出现 fatal error 。

您要做的是转义与开头引号冲突的引号。双引号内的单引号可以,反之亦然。

转义单引号内的单引号和双引号内的双引号 - 其余的应该可以离开。另外,我建议对你的 mysql 表和字段使用反引号,以避免在他们试图添加一些恰好与你的表/字段名称匹配的新关键字时出现一些错误

例如

如果使用单引号:

$conn->prepare('SELECT * FROM table WHERE string_field =\'value\'');

如果使用双引号:

$conn->prepare("SELECT * FROM table WHERE string_field =\"value\"");

如果混合:

$conn->prepare('SELECT * FROM table WHERE string_field = "value"');

\ 是用于这种情况的转义字符 :)

另一种方法是连接字符串:

$conn->prepare('SELECT * FROM table WHERE field = '. $foo);

所以分解它,你用首选引号声明字符串与往常一样,然后向它添加东西,你使用 . 来连接

关于mysql - 如何在mysql查询中正确格式化引号和双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44571191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com