Как вывести данные таблицы MySQL в HTML-таблицу, не зная, что $ строка похожа на phpmyadmin - PullRequest
0 голосов
/ 10 марта 2019

Хорошо, поэтому я пытаюсь создать сайт localhost, который имеет те же базовые функции, что и Phpmyadmin, и все работает, кроме отображения данных таблицы.

вот пример того, чего я пытаюсь достичь: enter image description here

хотя я не уверен, как это сделать. Вот некоторый код, чтобы показать вам, что у меня сейчас

<div class="content">
    <?php $query2 = "SELECT * FROM " . $table; ?>
    <div class="query-class">
        <?php echo $query2; ?>
    </div>
    <h1>
        Tables In <?php echo $db; ?>
    </h1>
    <table>


        <?php
            $columquery = "SHOW COLUMNS FROM " . $table;
            $columresult = mysql_query($columquery);
            while ($row3 = mysql_fetch_array($columresult)) {
                echo "<th>" . $row3['Field'] . "</th>";
            }
        ?>

        <?php

            $result2 = mysql_query($query2);
            while ($row2 = mysql_fetch_array($result2)) {
                foreach($row2 as $var) {
                    echo "<tr><td>" . $var . "</td></tr>";   
                }

            }
        ?>
        </table>
</div>

Да, да, я знаю, это ужасно.

Ответы [ 4 ]

1 голос
/ 11 марта 2019

В других ответах используется API mysqli, в то время как вы используете более старый, более не поддерживаемый mysql API. Я действительно рекомендую перейти на mysqli или PDO, но если вы хотите остаться с mysql, вы можете использовать следующее решение:

<div class="content">
    <?php $query2 = "SELECT * FROM " . $table; ?>
    <div class="query-class">
        <?php echo $query2; ?>
    </div>
    <h1>
        Tables In <?php echo $db; ?>
    </h1>
    <table>
        <?php
            $shouldOutputHeaders = true;
            $result2 = mysql_query($query2);

            while ($row2 = mysql_fetch_assoc($result2)) {
                if ($shouldOutputHeaders) {
                    echo "<tr>";
                    foreach (array_keys($row2) as $header) {
                        echo "<th>" . $header . "</th>"; 
                    }
                    echo "</tr>";

                    $shouldOutputHeaders = false;
                }

                echo "<tr>";
                foreach ($row2 as $var) {
                    echo "<td>" . $var . "</td>"; 
                }
                echo "</tr>";
            }
        ?>
    </table>
</div>
0 голосов
/ 10 марта 2019

Если я вас хорошо понял, вам нужно mysqli_fetch_row.

$q= "SELECT * FROM  table";
$result = $mysqli->query($q)
    while ($row = $result->fetch_row()) {
        print  ("$row[0], $row[1]);
    }
0 голосов
/ 10 марта 2019

Я добавил некоторые экранирующие символы и запрашивал базу данных только при необходимости:

// Print table tags
echo "<table>";

// Print out records 
$q = mysql_query("SELECT * FROM {$table};");
if($res = $result->fetch_all(MYSQLI_ASSOC)){
    // Print out columns 
    $columns = array_keys($res[0]);
    echo'<tr><th>'.implode('</th><th>', array_map('htmlspecialchars',$columns).'</th></tr>';
    // Print out table data
    echo'<tr><td>'.implode('</td><td>', array_map('htmlspecialchars',$res).'</td></tr>';
} else {
    // IFF there is no data, print out columns
    $q = mysql_query("SHOW COLUMNS FROM {$table};");
    if($res = $result->fetch_all(MYSQLI_ASSOC)){
        // Print columns
        echo'<tr><th>'.implode('</th><th>', array_map('htmlspecialchars',$res).'</th></tr>';
    }
}
echo '</table>';

Надеюсь, это поможет,

0 голосов
/ 10 марта 2019

Я думаю, вы ищете что-то очень уродливое, подобное следующему.Я нашел это в мусоре.Я не несу ответственности за его использование:

<?php
$db=Db::getConnection(); // singleton
$this->var['result']=$db->query($_POST['query']);

if (isset($this->var['result'])) {
    echo '<table cellpadding="5" cellspacing="2" border="1"><tbody>';
    $titles=array_keys(@$this->var['result'][0]);
    echo '<tr>';
    foreach($titles as $title)
        echo '<th>'.$title.'</th>';
    echo '</tr>';

    foreach($this->var['result'] as $row) {
        echo '<tr>';
        foreach($row as $cell) {
            echo '<td>'.$cell.'</td>';
        }
        echo '</tr>';
    }

    echo '</tbody></table>';
}
?>

Db - это стандартный синглтон, содержащий закрытый объект mysqli.query () содержит что-то вроде

$sql = $this->mysqli->query($query);
$this->lastInsertId = $this->mysqli->insert_id;
$errno = $this->mysqli->connect_errno;
if ($errno === 0) {
    if ($this->mysqli->field_count > 0) {
        while ($row = $sql->fetch_assoc()) $response[] = $row;
        return $response;
    }else{
        return true;
    }
}

для создания ответа «массив массивов».Подходит для выхода, который вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...