我有一个名为businesses的mySQL表,有4列。
<小时/>名称、网址、描述、类别
<小时/>我试图将整个目录显示在每个相应类别名称下的页面上。有没有比我目前所用的方法更好的方法?我希望将所有数据保存在一个表中,而不是为每个类别都有一个表。
<?php
$con = mysql_connect('localhost','username','password')
or die('Could not connect: ' . mysql_error());
mysql_select_db('relicc_dogedir')
or die('Could not select database');
$result = mysql_query("SELECT * FROM businesses ORDER BY category",$con);
$column = array();
while($row = mysql_fetch_array($result))
{
$column[] = $row['category'];
}
$merged_column = array_unique($column);
$refined_categories = array_values($merged_column);
foreach ($refined_categories as &$refined_category)
{ ?>
<h3><?php echo $refined_category;?></h3><?php
//Display sorted business names with corresponding category
}
mysql_close($con);
?>
最佳答案
首先,你应该知道mysql扩展已被弃用,你应该使用MySQLi或PDO_MySQL .
您可以先检索类别,然后针对每个类别检索相应的业务。
try
{
$dbh = new PDO('mysql:host=localhost;dbname=YOURDB', 'USERNAME', 'PASSWORD');
}
catch(PDOException $e)
{
echo $e->getMessage();
die;
}
$stmt = $dbh->query('SELECT category FROM businesses GROUP BY category');
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$categories = $stmt->fetchAll();
foreach ($categories as $category)
{
echo '<h3>'.$category['category'].'</h3>';
$stmt = $dbh->prepare('SELECT * FROM businesses WHERE category = :categoryName');
$stmt->bindParam(':categoryName', $category['category'], PDO::PARAM_STR);
$stmt->execute();
$businesses = $stmt->fetchAll();
foreach ($businesses as $business)
{
echo $business['name'];
echo '<br />';
}
}
关于php - 使用 php 对 mySQL 表进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21553488/