gpt4 book ai didi

PHP 搜索获取字段中存在数据的位置

转载 作者:行者123 更新时间:2023-11-30 00:54:23 26 4
gpt4 key购买 nike

我正在尝试创建搜索,无论如何我的网站是:

mysite.com/?p=search&t=[SEARCH VARIABLE]

因此,就我而言,如果我的网址是我希望它搜索我的帖子表并给出结果,其中 [SEARCH VARIABLE]存在于表中。主要是我希望它检查这些列:标题、内容和作者。如果其中有任何[搜索变量],我希望它显示出来。

尝试[仅使用 1 列]有效,但没有给出所有结果。

<?php
if (isset($_GET['t']))
{
$stmt = $dbh->prepare('SELECT * FROM posts WHERE `title` like :t');
echo ' <h1>Search results for: '.$_GET['t'].'</h1> ';
if (!$stmt->execute(array(':t' => $_GET['t'])))
{
exit('Could not exec query with param: '.$_GET['t']);
}

while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo '<font size="4pt">'.$row["title"].'</font><br>
';

}
}
?>

我的尝试与第一个相同,但检查了内容字段。也不起作用。

 <?php
if (isset($_GET['t']))
{
$stmt = $dbh->prepare('SELECT * FROM posts WHERE `title` like :t AND `content` like :t;');
echo ' <h1>Search results for: '.$_GET['t'].'</h1> ';
if (!$stmt->execute(array(':t' => $_GET['t'])))
{
exit('Could not exec query with param: '.$_GET['t']);
}

while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo '<font size="4pt">'.$row["title"].'</font><br>
';
}
}
?>

对于第一个,它只显示一个带有标题的字段。但我希望它能显示任何带有这个词的东西。例如,如果您搜索“嘿”并找到“嘿那里有苹果”,我希望它显示嘿那里有苹果。

编辑:

<?php
if (isset($_GET['t']))
{

$stmt = $dbh->prepare('SELECT * FROM posts WHERE `title` like %:t%');

echo ' <h1>Search results for: '.$_GET['t'].'</h1> ';

while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo '<font size="4pt">'.$row["title"].'</font><br>
';

}
}

?>

仍然需要帮助。

最佳答案

问题是您没有在搜索词周围放置 LIKE 通配符 (%)。如果没有通配符,查询将在参数中查找字面术语,这并不是您真正想要使用 LIKE 的目的。

所以这样的声明:

$stmt->execute(array(':t' => $_GET['t'])

应该是这样的:

$stmt->execute(array(':t' => '"%'.$_GET['t'].'%"')

编辑也许这样做会更好。将您的代码保留为原始问题,忽略上面的更改并调整您的语句,如下所示:

    $stmt = $dbh->prepare('SELECT * FROM posts WHERE `title` like %:t%');

另外,对于您的组合语句进行类似的更改,并且可能将 AND 更改为 OR:

    $stmt = $dbh->prepare('SELECT * FROM posts WHERE `title` like %:t% OR `content` like %:t%;');

但不知何故,您需要这些通配符才能获得问题所暗示的结果。

关于PHP 搜索获取字段中存在数据的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20714819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com