$search = htmlspecialchars($_GET["s"]);
if(isset($_GET['s'])) {
// id index exists
$wordarray = explode(" ",$search);
$stringsearch = implode('%',$wordarray);
echo $stringsearch;
echo ",";
$result = mysqli_fetch_array($conn->query("SELECT ID FROM table WHERE title LIKE '%$stringsearch%';"));
if (!empty($result)) {
echo sizeof($result);
echo ",";
数据库有 3 行标题为测试,害虫,嵌套,相应 id 为 1,2,3。 当我请求 domain.com/?s=est
它呼应了这样的东西预计,2,
现在,当我检查$result[0]和$result[1]时,$result[0]回显了1,$result[1]没有回显任何东西。当我使用 foreach 函数时,它只取 $result[0] 的值
$result应该是所有三个索引的数组。
我找不到任何错误,当我在SQL控制台中键入相同的命令时,它可以工作,有人帮助我,提前感谢。
问题是,如果您期望多行,请不要这样做:
$result = mysqli_fetch_array($conn->query("SELECT ID FROM table WHERE title LIKE '%$stringsearch%';"));
这只获取第一行,你需要循环它以前进下一个指针并获取下一个后续行集:
$result = $conn->query("SELECT ID FROM table WHERE title LIKE '%$stringsearch%' ");
while($row = $result->fetch_array()) {
echo $row[0] . '<br/>';
// or $row['ID'];
}
旁注:考虑改用预准备语句,因为 mysqli 已经支持此功能。