【问题标题】:Can someone explain why my MySQL table data is not being displayed?有人可以解释为什么我的 MySQL 表数据没有显示吗?
【发布时间】:2018-05-17 17:26:40
【问题描述】:

我是 PHP 和 MySQL 的新手。我有一个 HTML 表和表单,可以将输入的数据提交给 MySQL,但不会在我的 HTML 表中显示 MySQL 数据。这是一张供参考的图片:https://i.imgur.com/OEDd6Px.png。如果可能,我希望提交的数据在提交时显示,但我无法找到解决方案。提前致谢。

<?php
$host    = "localhost";
$user    = "root";
$pass    = "";
$db = "test";

$conn = mysqli_connect($host, $user, $pass, $db);
if (!$conn) {
    die ('Failed to connect to MySQL: ' . mysqli_connect_error()); 
}

if(isset($_POST["asin"]))
{
    $asin =  $_POST["asin"];
    $category = $_POST["category"];
    $submit = "INSERT INTO `user_input`(`id`, `asin`, `category`, `date`) VALUES (NULL, '$asin', '$category', CURRENT_DATE())";

    $sql = mysqli_query($conn, $submit);
    if (!$sql) {
    die ('SQL Error: ' . mysqli_error($conn));
    }

    $display = "SELECT * FROM user_input";
    $result = mysqli_query($conn, $display);
    if (!$result) {
    die ('SQL Error: ' . mysqli_error($conn));
    }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>testEnv</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css">
<style>
form {
    padding-bottom: 10px;
    padding-top: 10px;
}

table, thead, tbody, th, td {
    padding: 4px;
    border-collapse: collapse;
    border: 1px solid black;
}

form {
    font-size: 13px;
}

th, td {
    width: auto;
    text-align: center;
    font-size: 13px;
}
</style>
</head>
<body>
    <div class="container-fluid">
        <form id="form" method="post">
            <div>
            <label id="asinLabel" for="asin">ASIN:</label>
            <input id="asinInput" type="text" name="asin"></input>
            <label id="categoryLabel" for="category">Category:</label>
            <input id="categoryInput" type="text" name="category"></input>
            <input id="submit" type="submit" value="Submit"></input>
            </div>
        </form>
    </div>
    <div class="container-fluid">
        <table class="container-fluid">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>ASIN</th>
                    <th>Category</th>
                    <th>Date</th>
                    <th>6:00 AM</th>
                    <th>8:00 AM</th>
                    <th>10:00 AM</th>
                    <th>12:00 PM</th>
                </tr>
            </thead>
            <tbody id="tableBody">
                <?php
                while($row = mysqli_fetch_array($result));
                {  
                    echo '<tr>
                            <td>'.$row['id'].'</td>
                            <td>'.$row['asin'].'</td>
                            <td>'.$row['category'].'</td>
                            <td>'. date('m d, Y', strtotime($row['date'])) .'</td>
                            <td>'.$row['6am'].'</td>
                            <td>'.$row['8am'].'</td>
                            <td>'.$row['10am'].'</td>
                            <td>'.$row['12pm'].'</td>
                        </tr>';
                }
                mysqli_close($conn);
                ?>
            </tbody>
        </table>
    </div>
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script rel="script" type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script rel="script" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.js"></script>
<script rel="script" type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.js"></script>
</body>
</html>

【问题讨论】:

  • 我想你只需要将块移到if(isset($_POST["asin"])) 语句之外
  • ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 添加到脚本的顶部。这将强制任何mysqli_ 错误生成一个您可以在浏览器上看到的异常,并且其他错误也将在您的浏览器上可见。
  • 警告:当使用mysqli 时,您应该使用parameterized queriesbind_param 将用户数据添加到您的查询中。 不要使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
  • 这并不意味着你可以马虎,你可以半途而废。正确地做到这一点节省时间,因为你永远不会与一开始不偷工减料就可以避免的错误作斗争。另外,今天这是私人的。如果在不久的将来的某一天,该工具变得真正成功并且在您不知情的情况下被推向公众怎么办?这些事情都会发生。无论如何包含这些代码,其本质上都是危险的。
  • 感谢您的建议。 @tadman。

标签: php mysql mysqli php-7.2


【解决方案1】:

试着写

 $display = "SELECT * FROM user_input";
    $result = mysqli_query($conn, $display);
    if (!$result) {
    die ('SQL Error: ' . mysqli_error($conn));
}

挡住条件的一侧。

【讨论】:

    猜你喜欢
    • 2020-12-25
    • 1970-01-01
    • 2021-03-04
    • 2015-02-21
    • 2019-06-19
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多