我有一个名为"学生"和一个名为" stud_info"包含学生信息,例如" indexno" "名称" " studresults&#34 ;.我想仅使用索引编号搜索学生的详细信息。我尝试使用我在互联网上找到的示例来做到这一点,但它仅从关键字进行搜索。
有没有办法只使用#34; indexno"来搜索数据库表?
+----+---------+--------+-------------+ | id | indexno | name | studresults | +----+---------+--------+-------------+ | 1 | 123456 | Andrew | Pass | | 2 | 125845 | John | Pass | | 3 | 2258996 | Kevin | Pass | | 4 | 1258896 | Emily | Pass | +----+---------+--------+-------------+
这是代码,
index.php文件
<form action="search.php" method="GET">
<input type="text" name="query" />
<input type="submit" value="Search" />
</form>
search.php文件
<?php
mysql_connect("localhost", "root", "root") or die("Error connecting to database: ".mysql_error());
mysql_select_db("students") or die(mysql_error());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
$query = $_GET['query'];
$min_length = 3;
if(strlen($query) >= $min_length){
$query = htmlspecialchars($query);
$query = mysql_real_escape_string($query);
$raw_results = mysql_query("SELECT * FROM stud_info
WHERE (`indexno` LIKE '%".$query."%')") or die(mysql_error());
if(mysql_num_rows($raw_results) > 0){
while($results = mysql_fetch_array($raw_results)){
echo "<p>Index No:".$results['indexno']."<br />Name:".$results['name']."<br />Results:".$results['studresults']."</p>";
}
}
else{
echo "No results";
}
}
else{
echo "Minimum length is ".$min_length;
}
?>
</body>
</html>
答案 0 :(得分:1)
您不需要LIKE
,但比较器=
(完全等于)。
所以你的WHERE
- 子句应该是这样的:
WHERE (`indexno` = '".$query."')
LIKE
确实提供了一种与通配符(%
)松散匹配的方法。所以,如果你写:
`indexno` LIKE '%96'
您将获得包含以下indexno
的记录:
22589的 96
12588的 96
因为两者都以96
结尾,而96
之前的通配符告诉LIKE
比较器,只要它们以{{1}结尾,所有内容都可以位于比较值的开头}。
在你的情况下,匹配更松散,因为你在字符串的开头和结尾都有一个通配符。因此,如果您输入96
,则2
子句如下:
LIKE
将匹配您提供的示例数据的每条记录,因为字符串LIKE '%2%'
之前和/或之后可能存在任何内容。对于每条记录都是如此,因为每条记录至少包含一个2
。
答案 1 :(得分:0)
这样做:
在index.php文件中:
<form action="search.php" method="POST">
<input type="text" name="query" />
<input type="submit" value="Search" />
</form>
在search.php文件中只需更改:
$query = $_POST['query'];
让我知道这些变化之前和之后的结果。
答案 2 :(得分:0)
正确替换您的数据库名称 您已创建数据库作为学生并已插入
mysql_select_db("stud_info") or die(mysql_error());
首先将其更改为
mysql_select_db("students") or die(mysql_error());
答案 3 :(得分:-3)
您正在使用&#34; Like&#34;进行模式搜索。语法使用&#34; =&#34;在您的查询中
这就是你的QUERY&#34; SELECT * FROM结果,其中indexno =&#34;。$ query