PHP / MySQL:如何显示搜索项目之前和之后的单词

时间:2013-10-10 23:23:41

标签: php html mysql sorting

在我的数据库中,我有这些话: AA,AB,AC,AD,AE,AF,AG

我搜索“AD”为:

<form method="post" action="AF9.php">
        <input type="submit" name="submit" value="search">
        <input type="text" name="search" />
</form>

我想按字母顺序对数据库中的所有单词进行排序。然后只显示搜索到的值(即AD)和之前​​的单词以及之后的单词。像这样:

  • AC
  • AD
  • AE

这是我到目前为止所写的内容(非常感谢您的帮助):

<?php
include('includes/db_AF.php'); //includes the db credentials
$connection = @new mysqli(HOSTNAME, MYSQLUSER, MYSQLPASS, MYSQLDB);
if ($connection->connect_error) {
  die('Connect Error: ' . $connection->connect_error);
} else {

  $search=$_POST["search"];

  $query="SELECT word FROM wordtable2
  WHERE word like '%' 
  ORDER BY word ASC";   // I am sorting all the words in the database                       

  $result_obj = '';
  $result_obj = $connection->query($query);         

  while($result = $result_obj->fetch_array(MYSQLI_ASSOC)) { 
    $items[] = $result;
  }                             

  foreach ($items as $item) {
    echo $item['word']; //Here I need to echo the results, but don't know how to
  }
}
?>

2 个答案:

答案 0 :(得分:2)

在SQL中可能有更优雅的方法,但我能想到的最简单的方法实际上涉及两个查询。

使用你的例子......

假设您的数据库包含以下条目

AA, AB, AC, AD, AE, AF

按照您的示例,您具有值AD,并且您想要检索AC和AE。

首先,做一个这样的查询......

SELECT word FROM wordtable2
    WHERE word > 'AD'
    ORDER BY word ASC
    LIMIT 1;

然后做这样的查询...

SELECT word FROM wordtable2
    WHERE word < 'AD'
    ORDER BY word DESC
    LIMIT 1;

答案 1 :(得分:0)

我想你想说的话是:

echo $items[$item];

如果在foreach()循环的上下文中使用,则会显示$ items数组中的每个单词。