mysql - Doctrine Query Builder,如何转义单引号?
问题描述
我正在尝试运行替换查询,如下所示:
$qb = $this->createQueryBuilder('q');
$qb->where("REPLACE(q.name,'-','') = :q")->setParameter('q', $q);
return $qb->getQuery()->execute();
这将正常工作。
问题是我尝试替换单引号"REPLACE(q.name,'\'','') = :q"
它会抱怨它无法逃脱它。
与"REPLACE(q.name,'\\'','') = :q"
或相同"REPLACE(q.name,\"'\",'') = :q"
有任何想法吗?
解决方案
为什么不添加第二个参数?由于REPLACE
默认情况下在 Doctrine 中不存在,我认为您已经添加了beberlei/DoctrineExtensions
包。使用此软件包,以下内容将起作用。
$qb->where("REPLACE(q.name,:s,'') = :q")
->setParameter('q', $q)
->setParameter('s', "'");
推荐阅读
- mysql - 将多个 JOINS(内部和左侧)组合成一个 Select
- python - 查找并返回至少有一个 np.inf 值的 Pandas 数据帧的行
- python - 比较两个excel文件并使用python在新的excel中打印不匹配值
- php - 命令行:“php”错误或找不到
- python - Cron (cronie) 抛出语法错误但手动工作
- ios - CallKit 重新初始化导致 com.apple.CallKit.error.requesttransaction Code=4 (UnknownCallUUID)
- azure-cognitive-search - Azure 搜索似乎不处理 unicode 标点符号
- python - "no module named cv2" after installing opencv3.4.0 successfully
- php - PHP - 从深度未知的多维数组中获取具有特定数组键的所有值
- objective-c - 如何在 Catalina (10.15) 上以编程方式启动键盘?