我们有一个页面tcount.php,我们使用php脚本在mysql数据库的文本字段中的任何地方获取BOTH keyword1和keyword2的计数。计数显示为超链接。在此之后,我们希望如果有人点击超链接,他们将在showt.php页面中看到详细结果,显示数据库的那些行仅对应于包含BOTH关键字的那些文本字段。
第二页showt.php的网址就像
http://www.example.com/page.php?keyword=keyword1+keyword2
但问题是它只显示那些将keyword1和keyword2放在一起的结果。
例如,keyword1是car,keyword2是cap,我们的文本字段如下 -
汽车上限
汽车最佳上限
car new
然后,我们希望它显示1.和2.作为结果,但它只显示否。结果页面中有1个。
请帮忙。
修改
这是第1页中的代码tcount.php -
$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 } ?>
这是第2页showt.php中的代码 -
$keywords = $_GET['keyword'];
$sql="SELECT col1, col2, col3 from t AS s INNER JOIN users AS p ON
s.user_name=p.user_name where s.t_text LIKE '%$keywords%'
答案 0 :(得分:0)
查询的WHERE
语句应如下所示:
WHERE my_text_field LIKE ?
,绑定参数应为%$keyword1%$keyword2%
为了定义$keyword1
和$keyword2
变量,您可以执行以下操作:
list($keyword1, $keyword2) = explode(' ', $_GET['keyword']);
或者,如果您有多个可能的关键字,则可以使用"%" . implode('%', explode(' ', $_GET['keyword'])) . "%"
答案 1 :(得分:0)
有两种方式 一个是通过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本身,即全文搜索