php - 设置mysql "search"页面

标签 php mysql sql

我需要一些关于如何设置此页面的帮助。假设我有一个包含 5 个左右数据字段(即 id、名字、姓氏、最喜欢的颜色、最喜欢的数字)的 mysql 表。我想让用户能够搜索表格,所以我创建了一个“搜索”页面。

在页面上,我将有 ID、姓氏和名字的文本字段。用户可以从这里插入数据进行搜索。我想我感到困惑的是如何编写一个脚本,该脚本从文本字段中获取不同的搜索条件并忽略留空的字段。例如,如果用户只输入名字或姓氏,则将显示具有相同名字/姓氏的所有条目。如果他们只插入 id(将是唯一的),那么将显示该用户的所有内容。如果他们同时输入姓氏和姓氏,则将显示具有该名字和姓氏的条目的所有数据。

我想这是基本的,但我是新手,所以非常感谢任何有关如何设置它的帮助。

代码更新:

<?php
//Connect and select database

//if user wants to search
if(isset($_POST['submit']))
{

$sqlConditions = array();

if(isset($_POST['id'])){
$id = filter_var($_POST['id'], FILTER_VALIDATE_INT);
$sqlConditions[] = 'id = ' . $id;
} else {
$id = 0;
}

if(isset($_POST['firstname'])){
$firstName = filter_var($_POST['firstname'], FILTER_SANITIZE_STRING);
$sqlConditions[] = 'firstname = ' . $firstName;
} else {
$firstName = '';
}

if(isset($_POST['lastname'])){
$lastName = filter_var($_POST['lastname'], FILTER_SANITIZE_STRING);
$sqlConditions[] = 'lastname = ' . $lastName;
} else {
$lastName = '';
}

$query = 'SELECT * FROM students WHERE ' . join (' AND ', $sqlConditions);

//print query
while ($row = $query->fetch_row())
{
  print "LastName = " . $row[0] . " FirstName = " . $row[1].
"Favorite Color = " . $row[2] . " Favorite Number = " . $row[3] . "<br /><br />\n";
}

}
?>


<html>
<body>
<form method = "POST" action = "<?php echo $_SERVER['PHP_SELF']; ?>">
<p>ID:<input type = "id" id="id" name="id" size="20" maxlength="40" /></p>
<p>First Name:<input type = "firstname" id="firstname" name="firstname" size="20" maxlength="40" /></p>
<p>Last Name:<input type = "lastname" id="lastname" name="lastname" size="20"    maxlength="40" /></p>
<input type="submit" id="submit" name ="submit" value="Search" />

</form>
</body>
</html>

最佳答案

我写这篇文章是为了刚开始使用 PHP 的人。如果他们是 PHP 专家,我向 OP 道歉,但这个网站适合所有人!

所以,这是我建议你做的:

  1. 编写一个能够connect 的简单脚本并从您填充的表格中选择/显示信息。
  2. 了解其工作原理后,学习如何使用 prepared statements .这将保护您免受 SQL injections 之类的事情的影响*

  3. 一旦你理解了这两个东西是如何工作的。您所要做的就是制作一个 HTML 表单(这很容易在 Sir Google 上找到帮助),然后使用您的 $_GET 或 $_POST 访问用户的输入并获取您的信息。 (如果您不明白 GET 和 POST 之间的区别,请也查一下!)

如果你能学会这些东西,你就会一路顺风。此外,了解 LIKE 的工作原理对您也有好处:

SELECT stuff FROM myTable WHERE someCondition LIKE '%Me%'

*(如果您从这个答案中学到一件事记住这一点)

关于php - 设置mysql "search"页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219416/

相关文章:

php - 使用 PHP 将 Android 应用程序连接到外部 MySQL 数据库

sql - sql的UNION子句性能问题

php - yii2:如何使用超棒的字体图标?

作为函数调用的 PHP 类

mysql - Django 南迁移 - 添加 FULLTEXT 索引

按特定值过滤时 SQL Server 查询永远不会完成

mysql - 从此 MySQL select+join+group 中删除 "Using temporary; Using filesort"

php - 如何覆盖验证码控制的 Symfony2 登录?

php - 将查询字符串附加到任何形式的 URL

php - Symfony2 将父实体 ID 设置为关系表