gpt4 book ai didi

PHP运行MySQL查询

转载 作者:行者123 更新时间:2023-11-29 02:25:32 24 4
gpt4 key购买 nike

让我给你一些信息,我有一个支持数据库的博客系统,数据库保存文章的标题。现在我尝试创建一个“相关新闻”功能,它是相当基本的,它只是获取现有页面的标题并将其拆分成这样(注意 $row_object_title 只是从数据库中提取的标题):

$row_object_title_lower = strtolower($row_object_title);
$keywords = explode(" ",$row_object_title_lower);

然后我通过我的函数运行它:

exclude_conjuctions($keywords);

该函数的代码(查找某些单词并将其从数组中删除:

function exclude_conjuctions($array){
global $keywords_new;

$keywords_new = $array;
$conjuctions = array("here","to","and","but","or","nor","for");

$counter = count($keywords_new);
foreach($conjuctions as $conjuction){
for($i=0;$i <= $counter;$i++){
if ($keywords_new[$i] == $conjuction){
unset($keywords_new[$i]);
}
}
}

return $keywords_new;
}

所以现在我将构建查询以检索标题中包含关键字的所有文章:

$sql = '';
foreach ($keywords_new AS $keyword)
{
if ($sql != '')
$sql .= ' OR ';

$sql .= "object_title LIKE '%$keyword%'";
}

$squery = 'SELECT object_title FROM example_table WHERE '.$sql;

现在。它似乎工作正常,但有时它返回的标题与当前文章的词不相同,所以我调查了它,它似乎拾取了部分词并返回了,这当然是这不是我们想要的,如果您感到困惑,请看一下这张图片:

http://puu.sh/7UhhW.jpg

请注意我是如何搜索“dow”的,这些字母在当前标题和检索到的标题中都可以找到。当然,我需要它只返回标题中有完整单词的相关文章,而不是部分单词。我做错了什么伙计们?也许我的 MySQL 查询需要更改?也许有更好的解决方案?会喜欢一些帮助。

这是一个你能想象得到的问题。

提前感谢您的帮助。

最佳答案

尝试做 LIKE '% {$keyword} %'

您的查询也容易受到 SQL 注入(inject)攻击。

How can I prevent SQL injection in PHP?

编辑:更好的方法是使用正则表达式:

REGEXP '[[:<:]]{$keyword}[[:>:]]'

代替 LIKE...

关于PHP运行MySQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22834201/

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