php - 在 php mysql 中使用 where 条件搜索输入数据
问题描述
如何使用where条件制作搜索数据?在这里...
我有表学生
CREATE TABLE `student` (
`id` int(11) NOT NULL,
`id_card` varchar(100) NOT NULL,
`name` varchar(100) DEFAULT NULL,
`class` varchar(30) DEFAULT NULL,
`student_guardian` varchar(100) DEFAULT NULL,
`major` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
我用 PHP 和 MYSQL 做了一个 CRUD,然后我用输入类型和按钮提交搜索数据。但我想搜索数据在哪里major
,在Mathematic
这个表中我输入数据主要是Mathematic
,,,,Science
Art
Music
这是我想要的条件
SELECT *
FROM student
WHERE student.major = 'Mathematic'
这是在输入文本中搜索的功能:
function search_student($keyword) {
$query = "
SELECT *
FROM student
WHERE id_card LIKE '%$keyword%'
OR name LIKE '%$keyword%'
OR student_guardian LIKE '%$keyword%'
OR student.major = 'Mathematic'
";
return query($query);
}
这也是功能:
function query($query) {
global $conn;
$result = mysqli_query($conn, $query);
$rows = [];
while($row = mysqli_fetch_assoc($result) ) {
$rows[] = $row;
}
return $rows;
}
当我搜索时,除了数学也出现了。什么问题?
解决方案
如果您总是希望专业是数学,而其他任何文件都需要包含关键字,那么您需要对 WHERE 条件进行分组。如果任何条件返回 true,您当前的查询将认为它匹配。
像这样的东西:
WHERE
(id_card LIKE ? OR name LIKE ? OR student_guardian LIKE ?)
AND major = 'Mathematic'
注意:我已将您手动注入的变量替换为,这是您使用参数化预准备语句?
时值的占位符,强烈建议您这样做。
推荐阅读
- load-testing - 负载测试的断点
- powershell - 是否有任何解决方法可以在没有管理员用户权限的情况下执行文件签名?
- android - 应用中心构建,错误:/usr/bin/jarsigner 失败,返回码:1
- php - 包含来自另一个 linux 帐户的 PHP 文件
- typescript - 如何避免 Firebase 中的冗余
- version-control - 如何通过dql获取特定用户对象的所有版本?
- php - PHP 高级 HTMLDOM 错误
- sql - 在 SQL Server 2016 的一列中插入英语和阿拉伯语数据
- javascript - 使用带有formik的react-select时无法读取未定义的属性“类型”
- java - 警报对话未显示