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函数的特定组合吗?是的,我不推荐它。您应该考虑从数据中删除斜杠。