-6ren">
gpt4 book ai didi

打开页面时 PHP 搜索显示整个数据库表

转载 作者:行者123 更新时间:2023-11-30 01:15:57 25 4
gpt4 key购买 nike

当我打开搜索页面时,

(1) 它立即显示所有结果(我的数据库中的每个条目。)

(2) 当使用空输入单击搜索按钮时,它还会显示我的数据库中的每个条目。

如何解决这个问题?任何帮助将不胜感激。

<form action="search.php" method="get">


<input type="text" name="k" size="50" value="<?php echo $_GET['k']; ?>"/>

<input type="submit" value="search" />


</form>
<hr color="white">

<?php

$k = $_GET['k'];
$terms = explode(" ", $k);

$query = "SELECT * FROM table WHERE ";

foreach ($terms as $each) {
$i++;

if ($i == 1)
$query .= "keywords LIKE '%$each%' ";
else
$query .= "OR keywords LIKE '%$each%' ";
}

//connect
mysql_connect("localhost", "abc", "pass");
mysql_select_db("mydb");


$query = mysql_query($query);
$numrows = mysql_num_rows($query);
if ($numrows > 0) {

while ($row = mysql_fetch_assoc($query)) {
$id = $row['id'];
$title = $row['title'];
$link = $row['link'];
$picture = $row['picture'];
$keywords = $row['keywords'];
$date = $row['date'];


echo $row['title'];

}

}
else
echo "No results found for \"<b>$k</b>\"";

//disconnect
mysql_close();



?>

最佳答案

您的问题很可能出现在前几行中:

$k = $_GET['k'];
$terms = explode(" ", $k);

$query = "SELECT * FROM table WHERE ";

foreach ($terms as $each) {
$i++;

if ($i == 1)
$query .= "keywords LIKE '%$each%' ";
else
$query .= "OR keywords LIKE '%$each%' ";
}

在运行 explode("", $k)$query 后检查您的 $terms 数组,然后再运行它。您必须检查以确保 foreach 语句中的 $each 元素至少不为空。

爆炸可能会在您的查询中放入空项目,因此您有:

`SELECT * FROM table WHERE keywords LIKE '%%'`

这将使任何其他OR关键字LIKE变得无用。

关于打开页面时 PHP 搜索显示整个数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19058008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com