Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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 类似撇号且相等的子句不起作用_Php_Mysql_Mysql Real Escape String_Apostrophe - Fatal编程技术网

Php 类似撇号且相等的子句不起作用

Php 类似撇号且相等的子句不起作用,php,mysql,mysql-real-escape-string,apostrophe,Php,Mysql,Mysql Real Escape String,Apostrophe,我有一个名为标签的表,它包含如下条目 ID 名称 创建日期 10 极限 2013-06-27 05:18:35 现在我想用query搜索limit的,但无法搜索记录 感谢我的努力。 'SELECT id FROM tags AS Tag WHERE name = "%'. urlencode($adTag) .'%" LIMIT 0,1' 'SELECT id FROM tags AS Tag WHERE name LIKE "%'. htmlspecialchars($adTag) .'

我有一个名为
标签的
,它包含如下条目

ID
名称
创建日期

10 极限 2013-06-27 05:18:35

现在我想用query搜索
limit的
,但无法搜索记录

感谢我的努力。

'SELECT id FROM tags AS Tag WHERE name = "%'. urlencode($adTag) .'%" LIMIT 0,1'

'SELECT id FROM tags AS Tag WHERE name LIKE "%'. htmlspecialchars($adTag) .'%" LIMIT 0,1'

'SELECT * FROM tags AS Tag WHERE name LIKE "%'. $adTag .'%" OR REPLACE(name,'''','') LIKE "%'. $adTag .'%"'

'SELECT id FROM tags AS Tag WHERE name LIKE "%'. mysql_real_escape_string( stripslashes($adTag)) .'%" LIMIT 0,1'

'SELECT id FROM tags AS Tag WHERE name LIKE "%'. mysql_real_escape_string($adTag) .'%" LIMIT 0,1'
其中,
$adTag
是动态出现的,其值是
限制的
。以上都是尝试过的,但都不起作用

让我知道我做错了什么,这样我就可以纠正mysql


谢谢。

我尝试重新创建数据库并进行搜索,结果上需要2个AddSlash。我认为MySQL会自动跳过第一个斜杠

addslashes(addslashes($adTag));

如果要搜索
限额
,必须在表中包含
限额

因此,首先要消除表项中错误的反斜杠

其余的和往常一样

$tag = $db->getOne('SELECT id FROM tags WHERE name = ?s', $adTag);
试试这个

$sql = "SELECT id FROM tags AS Tag WHERE name LIKE %". mysql_real_escape_string( stripslashes(urldecode($adTag))) ."% LIMIT 0,1

在谷歌搜索了这么多的工作之后,我终于开始工作了

下面是我的解决方案

SELECT *
FROM tags
WHERE `name` = 'limit\\''s'
LIMIT 0 , 30

它很有魅力。希望这对其他极客将来有所帮助。

为什么不使用
PDO
MySQLi
?@JW웃 感谢您的建议,但它即将结束,我无法回滚,因为我正在使用自定义MVC和mysql…以及它的内部项目,所以它不必担心
SQL注入
是否在“
限制
中有反斜杠”出于某种原因还是由于某种错误?@YourCommonSense感谢-1,但正如我所说的,它不会被使用,因为它将只在本地局域网中使用……好吧,这不是这里讨论的主题……请不要对此主题发表评论……我可以问一下,为什么会选择各种PHP函数的特定组合吗?是的,我不推荐它。您应该考虑从数据中删除斜杠。