首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HTML中打印表格的PHP函数

问在HTML中打印表格的PHP函数
EN

Stack Overflow用户
提问于 2015-01-23 00:11:35
回答 2查看 19.3K关注 0票数 1

使用PHP生成HTML代码来显示表(由相同长度的数组组成的数组)非常容易,例如下面的代码。然而,我想知道:有没有PHP函数可以帮你做到这一点?我在print table in php上搜索谷歌,在table上搜索PHP手册,但没有找到这样的函数。

来自http://davidwalsh.name/html-mysql-php的打印表的代码:

代码语言:javascript
复制
$result2 = mysql_query('SHOW COLUMNS FROM '.$table) or die('cannot show columns from '.$table);
if(mysql_num_rows($result2)) {
    echo '<table cellpadding="0" cellspacing="0" class="db-table">';
    echo '<tr><th>Field</th><th>Type</th><th>Null</th><th>Key</th><th>Default<th>Extra</th></tr>';
    while($row2 = mysql_fetch_row($result2)) {
        echo '<tr>';
        foreach($row2 as $key=>$value) {
            echo '<td>',$value,'</td>';
        }
        echo '</tr>';
    }
    echo '</table><br />';
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-23 00:23:11

没有这样的内置函数。你创建了你自己的,这就是它的工作方式。总是有var_dump(),但是对于一般的访问者来说是不可读的。

票数 0
EN

Stack Overflow用户

发布于 2015-01-23 05:32:53

你的问题的答案是:不,没有。

然而,我确实发现这个想法很有趣,所以我写了一个函数来做这件事。但是,您的示例使用的是MySQL(),它已被弃用且不安全。因此,我将改用PDO类。

请记住,此函数仅适用于打印出数据库表。它不能防止注入,因此不应该在查询中与用户输入一起使用!

代码语言:javascript
复制
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

include "pdo.class.php";

//Database data
define("DB_HOST", "localhost");
define("DB_USER", "");
define("DB_PASS", "");
define("DB_NAME", "");

function printTable($tbl_name, $db_query){
    //New PDO object
    $pdo = new Database();

    //Get column names
    $pdo->query("DESCRIBE ". $tbl_name);
    $col_names = $pdo->column();

    //Get number of columns
    $col_cnt = count($col_names);

    //Setup table - user css class db-table for design
    echo "<table class='db-table'>";
    echo "<tr colspan='". $col_cnt ."'>". $tbl_name ."</tr>";
    echo "<tr>";

    //Give each table column same name is db column name
    for($i=0;$i<$col_cnt;$i++){
        echo "<td>". $col_names[$i] ."</td>";
    }

    echo "</tr>";

    //Get db table data
    $pdo->query($db_query);

    $results = $pdo->resultset();
    $res_cnt = count($results);

    //Print out db table data
    for($i=0;$i<$res_cnt;$i++){
        echo "<tr>";
        for($y=0;$y<$col_cnt;$y++){
            echo "<td>". $results[$i][$col_names[$y]] ."</td>";
        }
        echo "</tr>";
    }
}

//Query
$sqlq = "SELECT * FROM tablename";

//Useage: printTable("tablename","query");
printTable("tablename",$sqlq);

?>

PDO类本身:

代码语言:javascript
复制
Class Database{
    private $host = DB_HOST;
    private $user = DB_USER;
    private $pass = DB_PASS;
    private $dbname = DB_NAME;

    private $dbh;
    private $error;

    private $stmt;

    public function __construct(){
        // Set DSN
        $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
        // Set options
        $options = array(
            PDO::ATTR_PERSISTENT    => true,
            PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
        );
        // Create a new PDO instanace
        try{
            $this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
        }
        // Catch any errors
        catch(PDOException $e){
            $this->error = $e->getMessage();
        }
    }

    public function query($query){
        $this->stmt = $this->dbh->prepare($query);
    }

    public function bind($param, $value, $type = null){
        if (is_null($type)) {
            switch (true) {
                case is_int($value):
                    $type = PDO::PARAM_INT;
                    break;
                case is_bool($value):
                    $type = PDO::PARAM_BOOL;
                    break;
                case is_null($value):
                    $type = PDO::PARAM_NULL;
                    break;
                default:
                    $type = PDO::PARAM_STR;
            }
        }
        $this->stmt->bindValue($param, $value, $type);
    }

    public function execute(){
        return $this->stmt->execute();
    }

    public function column(){
        $this->execute();
        return $this->stmt->fetchAll(PDO::FETCH_COLUMN);
    }

    public function resultset(){
        $this->execute();
        return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
    }

    public function single(){
        $this->execute();
        return $this->stmt->fetch(PDO::FETCH_ASSOC);
    }

    public function rowCount(){
        return $this->stmt->rowCount();
    }

    public function lastInsertId(){
        return $this->dbh->lastInsertId();
    }

    public function beginTransaction(){
        return $this->dbh->beginTransaction();
    }

    public function endTransaction(){
        return $this->dbh->commit();
    }

    public function cancelTransaction(){
        return $this->dbh->rollBack();
    }

    public function debugDumpParams(){
        return $this->stmt->debugDumpParams();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28093474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档