在我的数据库中,我有这些话: 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)和之前的单词以及之后的单词。像这样:
这是我到目前为止所写的内容(非常感谢您的帮助):
<?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
}
}
?>
答案 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数组中的每个单词。