基本上我有一个搜索查询,如果我在$ _GET中使用它,它可以正常工作,但我想为其中一个使用$ _POST(然后用json返回)。但是,我不确定如何实现这一点,以便搜索将单独查看每个单词...
这是我的搜索查询...
SELECT DISTINCT(auto), user_id, username, first_name, last_name, email, sex, active, ppic, time_zone, adult_filter, ((CASE WHEN `username` LIKE '%$search%' THEN 2 ELSE 0 END) + (CASE WHEN `first_name` LIKE '%$search%' THEN 1 ELSE 0 END) + (CASE WHEN `last_name` LIKE '%$search%' THEN 1 ELSE 0 END)) AS relevance
FROM users, network
WHERE `username` LIKE '%$search%' OR
`last_name`LIKE '%$search%'
OR `first_name` LIKE '%$search%'
ORDER BY relevance DESC, username LIMIT 5
所以基本上,我需要做的就是使$search = $_POST['search']
能够使用此查询...有人能告诉我这是如何实现的吗?
编辑: 看起来我可以使用$ .get ...(这很有意义)而不是$ .post(这是我习惯的)并获得相同的结果。如果我错了,请随意纠正我,但是我会尝试一下,看看它是怎么回事。
答案 0 :(得分:3)
使用$_REQUEST - 它包含$_GET
,$_POST
和$_COOKIE
的内容。
答案 1 :(得分:3)
简短的回答是你不应该这样做。
现在,答案很长......
为什么首先要将$_POST
用于读取请求?让我向您介绍HTTP上下文中安全和幂等的概念。
HTML 2.0规范说:
如果表格的处理是幂等的(即它没有持久性 对世界状态的可观察影响),然后是形式方法 应该是GET。许多数据库搜索都没有明显的副作用 制作查询表格的理想应用程序。
HTTP动词GET
专门用于检索资源而无需更改资源。我的意思是它安全。它不会引起任何副作用。您的案例中的GET
请求应该用于从数据库获取数据并显示它。现有的HTML页面,图像请求,数据库搜索等......这些都是应该使用GET
进行的安全请求。
同时,幂等意味着执行请求724次将具有与执行一次相同的效果。幂等请求可能会在第一次在数据库中创建某些内容,但它不会再次执行,或者只会在下次返回对它的引用。
HTML规范继续......
特别是,已经建立了GET和GET的惯例 HEAD方法不应该具有采取行动的意义 除了检索。这些方法应该被认为是“安全的”。 这允许用户代理表示其他方法,例如POST,PUT 和DELETE,以一种特殊的方式,使用户了解 事实上,正在要求采取可能不安全的行动。
因此,总而言之,请您了解不应使用POST
执行安全的只读操作。
答案 2 :(得分:0)
你应该研究mysql match against的相关性和几个列的匹配。
SELECT DISTINCT(auto), user_id, username, first_name, last_name, email, sex, active, ppic, time_zone, adult_filter, ((CASE WHEN `username` LIKE '%$search%' THEN 2 ELSE 0 END) + (CASE WHEN `first_name` LIKE '%$search%' THEN 1 ELSE 0 END) + (CASE WHEN `last_name` LIKE '%$search%' THEN 1 ELSE 0 END)) AS relevance
FROM users, network WHERE MATCH (username, first_name, last_name) AGAINST ('$search' IN BOOLEAN MODE) ORDER BY relevance DESC, username LIMIT 5;
ADV对$ _REQUEST的建议将用于捕获帖子和获取。
但是,您询问了搜索字词中每个字词的相关性。匹配也可以这样做,但您需要将其选为列...
SELECT MATCH (username, first_name, last_name) AGAINST ('$search') AS relevance, DISTINCT(auto), user_id, ...
不要忘记在我提供的链接中查找匹配。如果你是新手,你需要知道一些事情 - 比如要在你要搜索的列上要求myisam表和全文索引。