我的表包含"类别"包含多个值的列,以","分隔。
示例:
user_ID ---" 1" | 类别---"视频,音频,游戏"
user_ID ---" 2" | 类别---"音频,写作"
user_ID ---" 3" | 类别---"视频,游戏"
现在我通过以下方式爆炸类别列:
$data = explode(',', $get_category_section);
所以我得到阵列..
现在我想查看每个类别的ID
示例
类别音频将显示user_id" 1"和" 2"
类别视频将显示user_id" 1"和" 3"
等等
这是我的代码 - 我知道它错过了很多:
if (isset($_GET['category']) === true and empty($_GET['category']) === false) {
$get_category = $_GET['category'];
global $connect;
$query = "SELECT category FROM `users`";
$result = mysqli_query($connect, $query) or die('erreor');
while ($row = mysqli_fetch_array($result)) {
$get_category_section = $row['category'];
$data = explode(',', $get_category_section);
$category_array = in_array($get_category, $data);
echo //
}
}
我的网址是:http://localhost/site/get_categories.php?category=video
我希望此页面显示1和3
由于
答案 0 :(得分:2)
当然,即使有66个类别(它们并不多),你也应该去规范化或重构你的数据库设计。为类别创建一个单独的表,并创建另一个表来存储user_id和category_id。
如果您仍想继续使用相同的结构,请使用现有架构的可能解决方案。
解决方案1:
$param = "%{$_GET['category']}%";
$stmt = $db->prepare("SELECT user_id, category FROM users");
$stmt->execute();
$result = $stmt->get_result();
while ($myrow = $result->fetch_assoc()) {
unset($caregories);
$categories = explode(",", $myrow['category']);
if(in_array($param, $categories)) {
$user_id[] = $myrow['user_id'];
}
}
请对查询进行解释,例如'可能很慢
解决方案2:
{{1}}
user_ids将在数组user_id中。请注意,随着表中记录数量的增加,这将变慢。