这是我的代码
<?php
error_reporting(E_ALL & ~E_NOTICE);
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "hostel";
// Create connection
$link = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if(isset($_REQUEST['submit'])){
$state=$_POST['state'];
$district=$_POST['district'];
$area=$_POST['area'];
$category=$_POST['hostel_category'];
$bed=$_POST['bed_type'];
$query_sid="SELECT * FROM hostel_register WHERE bed_type like '%".$bed."%' and state like '%".$state."%' and district like '%".$district."%' and category like '%".$category."%' and status like '%".paid."%' and area like '%".$area."%'";
if($result_sid = mysqli_query($link, $query_sid) ){
while ($row = mysqli_fetch_assoc($result_sid)) {
?>
<center>
<div class="col-sm-4 well"><h3><font color="#990000"><?php echo $row['hostel_name'];?></font></h3>
<p><p><?php echo $row['district'];?>-<?php echo $row['state'];?></p>
<p><?php echo $row['area'];?></p>
<p><?php echo $row['category'];?></p>
<p><?php echo $row['bed_type'];?></p>
<p><?php echo $row['rent_nonac_five'];?>/- Rs</p>
<p><a href="HostelDetails.php?details_id=<?php echo $row['id'];?>" class="btn btn-info">Details</a></p>
</div>
</center>
<?php }
/* free result set */
}
else {echo "No Result";}
}
/* close connection */
mysqli_close($link);
?>
在DB中有一个列&#34; bed_type&#34;价值&#34; AC两张床,AC三床&#34;。对不起,我正在写完整的代码,但我真的很困惑。如何只显示一个值。我用&#34;喜欢&#34;但这是取得所有价值。但我想只展示一个。
答案 0 :(得分:1)
您需要规范化您的数据库。 从不在一列中存储多个值。
在单个列中存储多个逗号分隔值绝不是一个好主意,其中一个原因是因为它会导致与您的问题完全相同的问题。 (还有更多原因) 显然你可以用逗号存储字符串,但你的数据库看不到&#34; AC One Bed,AC Two Bed&#34;作为两个不同的项目,它只是一个字符串。
你知道你也不应该创建另一个名为bed_type_2的列,因为如果有第三种床类型怎么办?
因此,为了规范化数据库,您需要做的是:
1)创建一个名为bed_types
的新表,其中包含id和类型/名称
2)插入所有可能的床型。每种类型一个条目。 (一个用于&#34; AC两床&#34;一个用于&#34; AC三床&#34;等等)
3)创建另一个名为hostel_register_bed_types
的表,该表将用作联结/ helpertable / jointable。
在该表中,将有一个来自hostel_register_id的外键和一个bed_type_id的外键。
如果hostel_register有多个bed_types,您将在hostel_register所拥有的每种床型中插入一条记录{/ 1}} 。
现在您应该有一个更规范化的数据库结构,您可以单独访问/选择您的床型。 hostel_register现在可以拥有任意数量的床型,而无需在一列中存储多个值。
您必须使用join语句相应地编辑查询。
如果您想了解这些内容,请点击以下链接:
Many-to-Many relationships and junction tables
DB normalization