Php 从单词中获取下一个和前一个单词

Php 从单词中获取下一个和前一个单词,php,mysql,Php,Mysql,我在数据库中有tb单词: ===================== = id = kata = posisi ===================== = 1 = you = 1 = = 2 = should= 2 = = 3 = eat = 3 9 20 = etc posisi列显示了单词在句子中的位置,对于我用空格分隔的每个单词,可以有2个或更多的位置。该表来自以下句子的索引过程: You should eat two banana

我在数据库中有tb单词:

=====================
= id = kata = posisi
=====================
= 1 = you   =  1         =
= 2 = should=  2         =
= 3 = eat   =  3 9 20    =
etc
posisi列显示了单词在句子中的位置,对于我用空格分隔的每个单词,可以有2个或更多的位置。该表来自以下句子的索引过程:

You should eat two bananas before lunch and eat two before your dinner and then consume one banana. i eat banana
我想从一个关键词前5个单词和后5个单词。 例如,我提交关键字
我将得到结果:

eat two bananas before lunch and eat two before your dinner

以下是我尝试过的代码:

require_once 'connection.php';

function getPosition ($keyword) {
    $key = strtolower($keyword);
    $query = mysql_query("SELECT * FROM words WHERE kata = '$key' ") or die(mysql_error());
    while ($row = mysql_fetch_array($query)) {
        $position = $row['posisi'];
    }
    return $position;
}

$key= 'And';
$and = getPosition($key);
$explode = explode (' ', $and);
foreach ($explode as $data => $datas){
    for ($i = 1 ; $i < 6 ;$i++){
        $nextdata[$i] = (int)$datas + $i;
        $databefore[$i] = (int)$datas - $i;

        $queryNext = mysql_query("SELECT kata FROM words WHERE posisi = '$nextdata[$i]' and posisi =$databefore[$i] ") or die(mysql_error());
        while ($row = mysql_fetch_array($queryNext)) {
            $position = $row['kata'];
        }
        //print_r($position);

    }
}
require_once'connection.php';
函数getPosition($keyword){
$key=strtolower($keyword);
$query=mysql\u query(“从单词中选择*,其中kata='$key')或die(mysql\u error());
while($row=mysql\u fetch\u array($query)){
$position=$row['posisi'];
}
返回$position;
}
$key='和';
$and=getPosition($key);
$explode=爆炸(“”,$and);
foreach($data=>$datas){
对于($i=1;$i<6;$i++){
$nextdata[$i]=(int)$datas+$i;
$databefore[$i]=(int)$datas-$i;
$queryNext=mysql_query(“从posisi='$nextdata[$i]'和posisi=$databefore[$i]'的单词中选择kata”)或die(mysql_error());
while($row=mysql\u fetch\u数组($queryNext)){
$position=$row['kata'];
}
//打印(职位);
}
}

但是它不起作用,可能问题是当它遇到有很多位置的列时,它不能被读取。请帮帮我。谢谢:)

解释“不起作用”。@草莓:我必须为位置创建一个新表吗?您不必做任何事情,但规范化是使用RDBMS的先决条件。是的,如果你把位置放在一张单独的桌子上,这个问题会变得非常容易。顺便说一句,那可能是太多香蕉了。
require_once 'connection.php';

function getPosition ($keyword) {
    $key = strtolower($keyword);
    $query = mysql_query("SELECT * FROM words WHERE kata = '$key' ") or die(mysql_error());
    while ($row = mysql_fetch_array($query)) {
        $position = $row['posisi'];
    }
    return $position;
}

$key= 'And';
$and = getPosition($key);
$explode = explode (' ', $and);
foreach ($explode as $data => $datas){
    for ($i = 1 ; $i < 6 ;$i++){
        $nextdata[$i] = (int)$datas + $i;
        $databefore[$i] = (int)$datas - $i;

        $queryNext = mysql_query("SELECT kata FROM words WHERE posisi = '$nextdata[$i]' and posisi =$databefore[$i] ") or die(mysql_error());
        while ($row = mysql_fetch_array($queryNext)) {
            $position = $row['kata'];
        }
        //print_r($position);

    }
}