一个PHP函数来处理不同的MySQLi select语句

时间:2017-01-30 11:46:05

标签: php mysql mysqli

我有两个包含列数的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函数动态从不同表格中获取数据的方法吗?感谢

2 个答案:

答案 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表格的形式显示其内容。

但同样,这样的通用输出函数也没什么用处,因为从你自己的例子中可以看出,不同的字段需要不同的格式。因此,每次手动编写输出效果会更好。