我正在尝试从表中的不同列中进行选择,然后让MYSQL搜索字段值。我搜索过谷歌,但我设法获得的最多是使用IN和LIKE查询,这对我正在努力实现的目标没有多大帮助。
<?php
//get rows query
$query = $db->query("SELECT * FROM categories WHERE cat_parent = 'Root'");
while($row = $query->fetch_assoc()){
$cat_name = $row["cat_name"];
?>
<li><a href="$id"><?php echo $cat_name; ?></a>
</li>
<?php } ?>
<?php
//get rows query
$query = $db->query("SELECT * FROM categories WHERE cat_parent = cat_name");
while($row = $query->fetch_assoc()){
$cat_name = $row["cat_name"];
?>
<li class="dropdown"><a href="$cat_id" class="dropdown-toggle" data-toggle="dropdown"><?php echo $cat_name; ?></a>
<div class="dropdown-menu">
<div class="dropdown-inner">
<ul class="list-unstyled">
<li><a href="$cat_id">$cat_name</a></li>
</ul>
</li>
</div>
</div>
</li>
<?php } ?>
此代码将从同一行中选择,这不是我需要的,我需要它从cat_name = cat_parent的所有表中进行选择,例如,如果cat parent是Electronics,而cat_name是笔记本电脑那么笔记本电脑必须显示在电子设备下面。
我希望我的问题很明确。
更新:我设法正确显示所有类别并进行过滤,除非它们互相重复。以下是新代码:
<?php
$query = $db->query("SELECT * FROM categories WHERE cat_parent = 'Root' AND cat_parent NOT IN (SELECT cat_name FROM categories)");
while($row = $query->fetch_assoc()){
$parent_cat_name = $row["cat_name"];
?>
<li>
<a href="$id">
<?php echo $parent_cat_name; ?>
</a>
</li>
<?php
$query1 = $db->query("SELECT * FROM categories WHERE cat_parent = '".$parent_cat_name."'");
while($row = $query1->fetch_assoc()){
$cat_name = $row["cat_name"];
?>
<li class="dropdown">
<a href="$cat_id" class="dropdown-toggle" data-toggle="dropdown">
<?php echo $parent_cat_name; ?>
</a>
<div class="dropdown-menu">
<div class="dropdown-inner">
<ul class="list-unstyled">
<li><a href="$cat_id"><?php echo $cat_name?></a></li>
</ul>
</div>
</div>
</li>
<?php
}
}
?>
我正在尝试查找MYSQL查询,以过滤所有类别为“Root”并且不在列cat_name中的类别。
答案 0 :(得分:2)
根据您问题中的信息,这应该按照您的要求进行。
<?php
$query = $db->query("SELECT * FROM categories WHERE cat_parent = 'Root'");
while($row = $query->fetch_assoc()){
$parent_cat_name = $row["cat_name"];
?>
<li>
<a href="$id">
<?php echo $parent_cat_name; ?>
</a>
</li>
<?php
$query = $db->query("SELECT * FROM categories WHERE cat_parent = '".$parent_cat_name."'");
while($row = $query->fetch_assoc()){
$cat_name = $row["cat_name"];
?>
<li class="dropdown">
<a href="$cat_id" class="dropdown-toggle" data-toggle="dropdown">
<?php echo $cat_name; ?>
</a>
<div class="dropdown-menu">
<div class="dropdown-inner">
<ul class="list-unstyled">
<li><a href="$cat_id">$cat_name</a></li>
</ul>
</div>
</div>
</li>
<?php
}
}
?>
上面的代码将子类while()循环置于父循环内部,以便它将检索cat_parent与其所在的父类匹配的所有子类。
答案 1 :(得分:-1)
想出来。不得不创建另一个名为category_sub的MYSQL表,并在我的查询中做一些变通方法。所以最后的结果应该是
<Configuration status="warn">
<Appenders>
<File name="MyFile" fileName="logs/my.log">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
</File>
<File name="OtherFile" fileName="logs/other.log">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
</File>
</Appenders>
<Loggers>
<!-- all logging from this package and subpackages goes to OtherFile -->
<!-- Note: set additivity=false or logging will also go to the root logger -->
<Logger name="com.other.company" additivity="false">
<AppenderRef ref="OtherFile"/>
</Logger>
<Root level="trace">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
我知道这不是最好的方法,必须有一个更简单的方法(但这是我能做的最好的方法)。