欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

如何用SELECT下拉菜单和TEXT文本框从选择数据库搜索数据

程序员文章站 2022-05-20 10:38:43
...
例如我的下拉列表中学号、姓名、籍贯等选项,我选中“籍贯”,并在后面的文本框中输入“北京”,点击搜索按钮就在数据库中相应的籍贯字段进行匹配,并输出最终的结果。我是用php+mysql,请问我下面的代码有问题吗?总是无法实现功能,显示记录为0条。

HTML页面:






PHP页面:
error_reporting(E_ALL ^ E_NOTICE);
$dbhost = "localhost";
$dbuser = "root";
$dbpassword = "";
$db = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_query("SET NAMES 'UTF8'");
mysql_select_db("lxshfile");
if(isset($_GET["action"])&&$_GET["action"]=="search"){
$searchId =$_POST["searchoption"];
$keyword =$_POST["keyword"];
$sqltext = "select * from lxsh where '$searchId' like '%$keyword%'";
$result = mysql_query($sqltext);
$row = mysql_numrows($result);
if($keyword==""){
echo"

请输入关键词!

";
exit;//若没有输入关键词,则结束程序
}
else{
echo("
搜索结果:共有".$row."条记录
");
echo("");
echo("");
echo("");
while ($table = mysql_fetch_array($result))//输出数据查询数据!
{
echo("");
echo("");
echo("");
}
echo("
学号姓名籍贯
".$table['xh']."".$table['xm']."".$table['jg']."
");
}
}
?>


回复讨论(解决方案)

'$searchId' =>`$searchId` 或者干脆就什么都别加。

mysql_num_rows

我试过了,还是不行啊,$searchId上的引号加上或者去掉都不成。还有别的方法吗?

不知道你说哪里不行。$row还是0吗?
$result = mysql_query($sqltext) or die(mysql_error());

贴出错误提示。

$sqltext = "select * from lxsh where '$searchId' like '%$keyword%'";

把这一句改成:

$sqltext = "select * from lxsh where $searchId like '%$keyword%'";

echo $sqltext;//可以打印出来看一下

$row = mysql_num_rows($result);
不是
$row = mysql_numrows($result);
楼主你写错了

回复3楼和4楼:

没有错误提示,就是点击了搜索以后搜索结果显示0条,没有任何搜索结果。
按照4楼的打印,比如我选了“学号”,输入了“069”,打印结果显示如下:
select * from lxsh where like '%069%'

$searchId的值没有取到,where后面什么都没有。

回复5楼:
已经修改过了,但是还是没有结果的显示,不知道是怎么回事。

回复3楼:

不好意思,有错误提示如下:
“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'like '%%'' at line 1”

回复3楼:

不好意思,有错误提示如下:
“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'like '%%'' at line 1”



你的$keyword有问题,可能值没传过来。检查一下




这里的value值的设置,你的有没有跟你数据库中的命名是一样的??如果不一样,你把它改成跟数据库的命名一样试试看!