Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用'\';在类似SQL的。。。逃逸'\';_Php_Mysql_Escaping_Sql Like - Fatal编程技术网

Php 如何使用'\';在类似SQL的。。。逃逸'\';

Php 如何使用'\';在类似SQL的。。。逃逸'\';,php,mysql,escaping,sql-like,Php,Mysql,Escaping,Sql Like,我正在尝试删除描述中没有快照聊天用户名的所有缓存项。我在尝试转义破折号字符时总是遇到语法问题 查询: $cacheItems = CacheItem::whereRaw("description NOT LIKE '%'") ->whereRaw("description NOT LIKE '%You use \ as your ESCAPE character in this: description NOT LIKE '%sc\_%' ESCAPE '\' $cac

我正在尝试删除描述中没有快照聊天用户名的所有缓存项。我在尝试转义破折号字符时总是遇到语法问题

查询:

$cacheItems = CacheItem::whereRaw("description NOT LIKE '%'")
      ->whereRaw("description NOT LIKE '%You use 
\
as your ESCAPE character in this:

  description NOT LIKE '%sc\_%' ESCAPE '\'
$cacheItems=CacheItem::whereRaw(“描述与“%”不同”)

->whereRaw(“说明”与“%”不同,您在以下情况下使用
\
作为转义字符:

  description NOT LIKE '%sc|_%' ESCAPE '|'
这是一个有问题的选择,因为
\
本身作为转义符被到处使用,在各种客户端软件包中也是如此

如果这是我的代码,那么在这个上下文中我根本不会信任
\
(因为我很懒,我不想知道它在哪里以及如何被用作转义字符)

或者,最好选择像这样的其他转义字符(
|
,在本例中)

或者将sql的转义部分中的
\
加倍,如下所示


(请记住,
列(如“%whatever”
)是一种臭名昭著的查询性能反模式,因为它不能在
列上使用任何索引)

你在使用特殊字符吗?
Sc
看起来很有趣。你在使用什么框架?还有你的
SQL
语句是错误的。Laravel framework,我理解我的语句是错误的-你能帮我弄清楚为什么吗?
\-
是什么意思吗?它在PHP中是无效的,复制了1:1。所以mysql抛出了一个错误。mysql不是逃逸“\”
  description NOT LIKE '%sc\_%' ESCAPE '\\'