【发布时间】:2023-03-18 23:02:02
【问题描述】:
我不确定这是否存在于 PHP/MySQL 中,
我想在 mysql 数据库中动态返回多个具有相似名称的列,并且它们为 null/"" 然后不返回该行,因为您不能添加重复的列名,我不确定如何做到这一点?
我正在这样做,但正在寻找一种更动态的方式,因为我不想依赖使用数组,通过传递一个让我们说“名称”的字符串,这可能吗?有点像 MySQL select "SELECT * FROM db WHERE name = 'Jack';"
$names = array("name1", "name2", "name3", "name4");
foreach ($names as $value) {
if($row [$value] > 0){
//
}else{
if($row [$value] == null){
//
}else{
echo $row[$value];
}
}
}
这是数据库的结构 - 假设下面的“”是空白的;
id category subcat name1 name2 name3 name4 name5
1 people names jack bob sue anna ""
2 people names name name "" "" ""
3 animals ... .. . .. etc
这是我的 php mysql 查询;
$sql = "SELECT * FROM db WHERE category = 'people'";
$result = $conn->query($sql);
$names = array("name1", "name2", "name3", "name4","name5");
while($row = $result->fetch_assoc()) {
echo $row["subcat"]."<br>";
foreach ($names as $value) {
if($row [$value] > 0){
//
}else{
if($row [$value] == null){
//
}else{
echo $row[$value]."<br>";
}
}
}
}
【问题讨论】:
-
行、列、值?你确定你了解它们在mysql中的区别吗?
-
请显示您的数据库架构、示例数据以及您要返回的内容。您的描述非常不清楚。
-
拥有
name1、name2等列通常是一种糟糕的表格设计。你应该有一个关系表,每个名字都有一行,然后你可以使用JOIN。 -
@Lashane & Barmar 谢谢.. 我已经用数据库模式和查询更新了我的问题,我不想有多个表。想把它们都放在一张桌子上,还是不可能做到这一点?
-
@Barmar 如果让我们说列名 name1/name2/name3...随着时间的推移动态更新... name6/name7/name8 等...