php - 根据用户设置的另一个表列值查询表列?
问题描述
我不确定这是否是最好的方法,但我有jobs
一个用户可以在我的网站上搜索的表格。我想将用户过滤器设置保存在另一个名为filter_prefs
.
我能想到的唯一方法是,当用户寻找工作时,我必须根据选择的类别选择工作类别并查询数据库中的工作。因此,当用户“取消选择”复选框时,它会删除列表,但不会删除复选框。同时,我将其存储为该0
类别filter_pref
列中,以便如果用户返回并加载作业,复选框将加载到网站上,但未选中,因此不会触发作业中该类别的查询。
jobs filter_prefs
+-----+-----+----------+------+ +-----+------------+---------+--------+
| jid | pay | category | Title | uid | Contractor | Teacher | Driver |
+-----+-----+----------+------+ +-----+------------+---------+--------+
| 5 | 15 |Contractor|Roofer| | 4 | 0 | 1 | 1 |
| 6 | 20 | Teacher | Bio | +-----+------------+---------+--------+
| 7 | 18 | Driver | LTL |
+-----+-----+----------+------+
我遇到的问题是,当我从表中查询类别时,我需要在filter_prefs
表中查询在语句的第一个循环中查询的确切列,fetch
这迫使我连接列的查询字符串。我一直在阅读这是 MySQL 自杀的原因。 这个可以吗?
$sql="SELECT DISTINCT category FROM jobs WHERE status='o'";
$stmt = $conn->prepare($sql);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($category);
while($stmt->fetch()){
$sql="SELECT '.$category.' FROM filter_prefs WHERE uid=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('i', $_SESSION['uid']);
$stmt->execute();
$stmt->bind_result($status);
$product_cat ='';
while($stmt->fetch()){
if($status==1){
$product_cat .= // MARK CHECKED, $CATEGORY AS TITLE.
}if($status==0){
$product_cat .= // MARK UNCHECKED, $CATEGORY AS TITLE.
}
}
}
echo $product_cat;
我对 MySQL 和 PHP 真的很陌生,所以我无法理解做这件事的不同方式。有没有更好的方法来存储用户偏好,将它们拉出来,然后影响网站的状态?我找不到任何显示如何做到这一点的材料。谢谢你。
解决方案
你filter_prefs
应该是
uid jid
4 6
4 7
这样用户的工作是:
SELECT uid, category
FROM filter_prefs
JOIN jobs
USING jid
保持数据结构的逻辑性,使其易于查询,并使 php 表示层适应表示。
如果您从一行中提取一个字段并尝试将其映射到不同的表名,那么您做错了。
推荐阅读
- excel - 在不同的行和列中返回一个具有多个条件的值
- python - 使用两个逗号分隔的列分解 pandas 数据框
- python - 将鼠标悬停在小部件本身上时,小部件拖动不起作用
- java - 生成 Swagger API 的最佳方法?即 codegen vs swagger 编辑器(Spring Boot API)
- python - Python中有没有办法通过单击按钮来改变函数的工作方式
- ssis - 动态 SSIS 包创建不起作用
- windows - 使用批处理脚本解析文本文件并从每行中删除前 2 个字符
- python - 在python中枚举CPU
- vue.js - Vue-fontawesome with Yarn
- c# - 更改对象类后无法反序列化 XML 文件