Php 如何在数据库字段的任意位置显示包含多个关键字的计数结果
我们有一个页面tcount.php,其中使用php脚本获取mysql数据库中文本字段中任意位置出现的关键字1和关键字2的计数。计数显示为超链接。在这之后,我们希望如果有人单击超链接,他们将在showt.php页面中看到详细的结果,其中显示仅与包含这两个关键字的文本字段对应的数据库行 第二个页面showt.php的url如下Php 如何在数据库字段的任意位置显示包含多个关键字的计数结果,php,mysql,Php,Mysql,我们有一个页面tcount.php,其中使用php脚本获取mysql数据库中文本字段中任意位置出现的关键字1和关键字2的计数。计数显示为超链接。在这之后,我们希望如果有人单击超链接,他们将在showt.php页面中看到详细的结果,其中显示仅与包含这两个关键字的文本字段对应的数据库行 第二个页面showt.php的url如下 http://www.example.com/page.php?keyword=keyword1+keyword2 但问题是,它只显示那些关键字1和关键字2相邻的结果 例如
http://www.example.com/page.php?keyword=keyword1+keyword2
但问题是,它只显示那些关键字1和关键字2相邻的结果
例如,关键字1是car,关键字2是cap,我们的文本字段如下-
$kewyWordQ = $db->query("SELECT keywords FROM Table1 ");
<?php
while($row = $kewyWordQ->fetch(PDO::FETCH_ASSOC))
{$keyWord = $row['keywords'];
$keyWordsArr = explode(" ", $row['keywords']);
$countData = array();
$keyIndex = 0;
$tIndices = array();
$tArr = array();
$tIndices[] = "-1";
foreach($keyWordsArr as $keyword)
{
$t = $db->query("SELECT user_name FROM Table2 WHERE
t_text LIKE '%$keyWordsArr[$keyIndex]%'");
$tArr[] = $t;
while($row2 = $tweet->fetch(PDO::FETCH_ASSOC))
{
$found = TRUE;
foreach($keyWordsArr as $keyword1)
{
$ret = strpos(strtolower($row2['t_text']),
strtolower($keyword1));
if(($ret == 0) &&
strcmp(strtolower($row2['t_text'][0], strtolower($keyword1)[0])))
{
$found = FALSE;
break;
}
}
if($found == TRUE)
{
$ret = strpos($tIndices, $row2['t_id']);
if(($ret == 0) && strcmp($tIndices[0],
$row2['t_id']))
{
$tIndices[] = $row2['t_id'];
$countData[] = $row2['user_name'];
}
}
}
$keyIndex++;
}
?>
<tr><td><?php echo $row['keywords'];?></td>
<td><a href="showt.php?keyword=<?php echo
urlencode($keyWord); ?>" target="_blank"><?php echo count($countData); ?
></a></td>
<td><a href="showt.php?keyword=<?php echo
urlencode($keyWord); ?>" target="_blank"><?php echo
count(array_unique($countData)); ?></a></td>
</tr>
<?php } ?>
查询的
WHERE
语句应该如下所示:
WHERE my_text_field LIKE ?
绑定的参数应该是%$keyword1%$keyword2%
要定义$keyword1
和$keyword2
变量,可以执行以下操作:
list($keyword1, $keyword2) = explode(' ', $_GET['keyword']);
或者您可以简单地使用
“%”。内爆('%',爆炸('',$\u GET['keyword'])。“%”
如果您有多个可能的关键字,则查询的WHERE
语句应如下所示:
WHERE my_text_field LIKE ?
绑定的参数应该是%$keyword1%$keyword2%
要定义$keyword1
和$keyword2
变量,可以执行以下操作:
list($keyword1, $keyword2) = explode(' ', $_GET['keyword']);
或者您可以简单地使用“%”。内爆('%',爆炸('',$\u GET['keyword'])。“%”
如果您有多个可能的关键字有两种方法
一个是php和mysql很难做到的
$keyword = $_GET('keyword');
$keywordArray = explode(" ",$keyword);
$queryString = "";
foreach($keywordArray as $key=>$value) {
$queryString .= " column_name LIKE '%$value%' OR";
}
"SElECT * FROM table WHERE ".$queryString
第二个是mysql本身,也就是全文搜索
一个是php和mysql很难做到的
$keyword = $_GET('keyword');
$keywordArray = explode(" ",$keyword);
$queryString = "";
foreach($keywordArray as $key=>$value) {
$queryString .= " column_name LIKE '%$value%' OR";
}
"SElECT * FROM table WHERE ".$queryString
第二个是mysql本身,即全文搜索您的mysql查询?@Gopalakrishnan添加了mysql php代码。请参见下面的OK试试我的答案我的代码与你答案中的代码相似。我认为第1页tcount.php中的计数显示正确,但第2页showt.php中的结果显示不正确。正如我在帖子中解释的,我得到的结果是关键字1关键字2,而不是那些在关键字1和关键字2之间有另一个单词的结果你的第一页给出的结果很好?你的mysql查询?@Gopalakrishnan添加了mysql php代码。请参见下面的OK试试我的答案我的代码与你答案中的代码相似。我认为第1页tcount.php中的计数显示正确,但第2页showt.php中的结果显示不正确。正如我在文章中所解释的,我得到的结果是关键字1关键字2,而不是那些在关键字1和关键字2之间有另一个单词的结果你的第一页给出的结果很好?这是针对第1页或第2页(请参阅我编辑的文章)这是针对第1页或第2页(请参阅我编辑的文章)@Gopalkrishnan请告诉我如何进行全文搜索purpose@Gopalkrishnan请告诉我如何做全文搜索的目的