我有两个包含列数的MySQL表。表格结构如下:
1.pictures
postedON
标题
imageName
thumbName
imageLocation
thumbLocation
2.Videos
postedOn
类别
链接
我使用下面的PHP函数使用select命令从DB获取数据
function select($table){
if($this->db_connection){
$query = 'SELECT * FROM '. $table;
$result = mysqli_query($this->db_connection,$query) or die($this->db_connection->error);
//print_r($result);
//echo "Affected rows: " . mysqli_affected_rows($this->db_connection);
//var_dump($result);
echo "<table>";
echo "<tr>";
echo "<th>Date Posted</th>";
echo "<th>Category</th>";
echo "<th>Link</th>";
echo "</tr>";
while($row = $result->fetch_assoc()){
echo "<tr>";
echo "<td>" . $row['postedOn'] . "</td>";
echo "<td>".$row['category']. "</td>";
echo "<td><a href=".$row['link'] .">" . $row['link'] . "</a></td>";
echo "</tr>";
}
echo "</table>";
}else{
echo "db_connection is = " . $this->db_connection;
}
}
}
您可以看到此功能的问题,它只能只提供一个表而不是动态的。有人可以解释一下只使用一个PHP函数动态从不同表格中获取数据的方法吗?感谢
答案 0 :(得分:0)
尝试使用mysqli_fetch_fields()
<?php
function select($table){
if($this->db_connection){
$query = 'SELECT * FROM '. $table;
$result = mysqli_query($this->db_connection,$query) or die($this->db_connection->error);
$fieldinfo = mysqli_fetch_fields($result);
echo "<table>";
echo "<tr>";
foreach ($fieldinfo as $val)
{
echo "<th>".$val->name."</th>";
}
echo "</tr>";
while($row = $result->fetch_assoc()){
echo "<tr>";
foreach ($fieldinfo as $val)
{
echo "<td>" . $row[$val->orgname] . "</td>";
}
echo "</tr>";
}
echo "</table>";
}else{
echo "db_connection is = " . $this->db_connection;
}
}
答案 1 :(得分:0)
考虑到你所处理的所有错误前提,可能很难解释,但我会尝试。
首先,您必须了解像SELECT * FROM table
这样的查询几乎没有任何用处。大多数时候,你总是有一些WHERE或至少LIMIT条款。所以,这样的功能根本没用。
接下来,您必须深入了解数据库交互不应与任何输出内容(如HTML)混合。
鉴于上述两个前提,您的函数应接受填充限定查询作为参数,并返回一个包含数据的数组。
对于哪个数组,您可以编写一个辅助函数来以HTML表格的形式显示其内容。
但同样,这样的通用输出函数也没什么用处,因为从你自己的例子中可以看出,不同的字段需要不同的格式。因此,每次手动编写输出效果会更好。