1

在我的数据库中,我有这些词: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)和之前​​的单词和之后的单词。像这样的东西:

  • 交流电
  • 广告
  • 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
  }
}
?>
4

2 回答 2

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;
于 2013-10-10T23:37:38.893 回答
0

我想你想说的是:

echo $items[$item];

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

于 2013-10-10T23:32:11.657 回答