【问题标题】:PDO Mysql data undisplayed when insert data is present存在插入数据时不显示 PDO Mysql 数据
【发布时间】:2015-10-03 03:31:20
【问题描述】:

当我显示来自数据库的数据时出现问题,我看到页面中的所有数据。但是当我要插入时,数据是不可见的。

这是代码:

    <?php
    include 'db.php';
    $stmt = $db->prepare('SELECT * FROM ' . $table);
    $stmt->execute();

    if(isset($_POST['btn-insert'])){

        $prodname = $_POST['prod_name'];
        $prodsupp = $_POST['prod_supplier'];
        $prodprice = $_POST['prod_price'];


    }
?>
<html>
    <head><title></title></head>
    <body>
            <table cellpadding="4" cellspacing="2" border='1'>
                <tr>
                    <th>Product ID</th>
                    <th>Product NAME</th>
                    <th>Product SUPPLIER</th>
                    <th>Product PRICE</th>
                </tr>
                <?php while($product = $stmt->fetch(PDO::FETCH_OBJ)) { ?>
                <tr>
                    <td><?php echo $product->prod_id; ?></td>
                    <td><?php echo $product->prod_name; ?></td>
                    <td><?php echo $product->prod_supplier; ?></td>
                    <td><?php echo $product->prod_price; ?></td>
                </tr>
                <?php } ?>
            </table>
            <br>
            <br>

            <form action="" method="post">
                <table cellspacing="2" cellpadding="2" border="1">
                    <tr>
                        <td>Product name:</td>
                        <td><input type="text" name="prod_name"></td>
                    </tr>
                    <tr>
                        <td>Product supplier:</td>
                        <td><input type="text" name="prod_supplier"></td>
                    </tr>
                    <tr>
                        <td>Product Price:</td>
                        <td><input type="text" name="prod_price"></td>
                    </tr>
                    <tr>
                        <td colspan="2"><input type="submit" name="btn-insert" value="INSERT"></td>
                    </tr>
                </table>
            </form>

    </body>
</html>

这是我尝试插入时的代码,只需更改顶部的 php 脚本:

<?php
    include 'db.php';
    $stmt = $db->prepare('SELECT * FROM ' . $table);
    $stmt->execute();

    if(isset($_POST['btn-insert'])){

        $prodname = $_POST['prod_name'];
        $prodsupp = $_POST['prod_supplier'];
        $prodprice = $_POST['prod_price'];

        $db = new PDO('mysql:host' . $host . ';dbname=' . $dbname, $dbusername, $dbpassword);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $stmt = $db->prepare("INSERT INTO tbl_product(prod_name, prod_supplier, prod_price) VALUES('$prodname', '$prodsupp', '$prodprice')");

    }
?>

这会发生什么:

这就是我现在遇到的问题。

【问题讨论】:

  • 您想在插入后查看您的数据,对吗?刷新页面后能看到新数据吗?
  • 是的,我想在插入后查看数据

标签: php mysql pdo


【解决方案1】:

您刚刚在“stmt”变量中创建了冲突... 首先

  $stmt = $db->prepare('SELECT * FROM ' . $table);
  $stmt->execute();

然后:

 $stmt = $db->prepare("INSERT INTO...

所以既然你准备好了插入语句,

这没有获取任何东西.. 检查冲突,它会没事的..

  $product = $stmt->fetch(PDO::FETCH_OBJ)

【讨论】:

  • 所以我需要创建一个新变量?
  • 所以你的建议是?
【解决方案2】:

在文档中,您首先执行 SELECT,然后执行 INSERT(如果存在 $_POST 数据)。但是在页面刷新之前,select 将无法显示 INSERTed 数据。

要同时显示现有数据和最近插入的数据,您可以执行以下操作:

  1. 用数据加载当前页面 (SELECT)。
    1. 如果 $_POST 数据存在:
    2. 清理并插入 $_POST 数据
  2. 在 INSERT 之后重新加载页面。

您现在将在重新加载的页面中看到现有和最近插入的数据。

提示:要重新加载页面,可以使用 rowCount 来检查是否插入了一行:

if($stmt->rowCount() == 1) {
   header("Location: index.php");
} else {
    // Error
}

【讨论】:

    猜你喜欢
    • 2018-02-18
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2017-07-03
    • 2014-11-26
    • 1970-01-01
    相关资源
    最近更新 更多