【发布时间】:2015-04-22 10:31:10
【问题描述】:
我尝试将元数据标签连接到用户,我得到了它们之间的关系,但是当我搜索标签时,我得到了一个很大的输出。我有一个名为 Chips 的标签,但输出的是 17 个不同的用户。它们都与单词或标签无关。
澄清我正在尝试做的事情: 我正在制作一个可以搜索用户名、座右铭和标签的搜索功能。 http://gyazo.com/d334447761152394ca1eecc392c35e92
<?php
$varr = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($url));
$varr = html_entity_decode($url,null,'UTF-8');
$query = $_GET['query'];
$min_length = 2;
if(strlen($query) >= $min_length){
$query = htmlspecialchars($query);
$query = mysql_real_escape_string($query);
$raw_results = mysql_query("SELECT * FROM users, user_tags
WHERE (`username` LIKE '%".$query."%') OR (`tag` LIKE '%".$query."%') OR (`motto` LIKE '%".$query."%')") or die(mysql_error());
$num_rows = mysql_num_rows($raw_results);
?>
【问题讨论】:
-
必须有一个匹配的词
Chips这就是返回结果的原因:P -
它们之间是什么关系?
-
他们因为 user_id 而建立了连接。我认为如果单词不匹配,它不会返回任何内容。它应该只匹配标签,因为没有一个用户以他们的名字命名为 ch、chi、chip、chips。
-
请注意 mysql_ 函数现在不再被劝阻(就像过去几年一样),而是正式的deprecated。你真的应该使用MySQLi 或PDO,因为这段代码很快就会停止工作。请参阅Why shouldn't I use mysql_* functions in PHP? 了解更多信息。