- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 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/
我是一名优秀的程序员,十分优秀!