2017-01-30 45 views
0

我有两个MySQL列表的列数。下面的表格结构中给出,一个PHP函数来处理不同的MySQLi select语句

1.pictures
postedON
字幕
imageName
thumbName
imageLocation
thumbLocation

2.Videos
postedOn
类别
链接

我正在使用以下PHP函数从数据库中使用select命令获取数据。

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

使用try 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; 
    } 
} 
+0

链接和图片怎么样? –

0

这可能是很难解释给你的方法是基于错误的前提,但我会努力。

首先,你必须明白像SELECT * FROM table这样的查询有一个很小的用处,几乎没有。大多数时候你总是有一些WHERE或至少LIMIT子句。所以,这样的功能根本没有用处。

接下来,您必须明白,数据库交互不应与HTML等任何输出内容混合。

鉴于上述两个前提,您的函数应接受填充限定查询作为参数,并返回一个包含数据的数组。

对于哪个数组,您可以编写一个辅助函数来以HTML表格的形式显示其内容。

但是,这样的广义输出函数也没什么用处,因为从你自己的例子中可以看出,不同的字段需要不同的格式。所以最好每次手写输出。

+0

感谢您的回答。我只是想在一个目录中显示所有可用的图片,这就是为什么我没有使用任何WHERE子句。我会考虑将HTML格式转换为单独的功能。但这并没有回答我的问题。有什么其他方式可以做到吗?谢谢 –

+0

就像我说的,你的问题应该返回一个包含数据的数组。有什么不清楚的呢? –

+0

明白了。谢谢。 –