当我从数据库显示数据时出现问题我看到页面中的所有数据。但是当我要插入数据时,数据是不可见的。
这是代码:
<?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')");
}
?>
这就是我此时遇到的问题。
答案 0 :(得分:0)
您刚刚在&#34; stmt&#34;中创建了冲突。变量... 首先
$stmt = $db->prepare('SELECT * FROM ' . $table);
$stmt->execute();
然后:
$stmt = $db->prepare("INSERT INTO...
所以,因为你准备了插入语句,
这不是取任何东西.. 检查冲突,它会没事......
$product = $stmt->fetch(PDO::FETCH_OBJ)
答案 1 :(得分:0)
在文档中,首先执行SELECT,然后执行INSERT(如果存在$ _POST数据)。但是,在页面刷新之前,select将无法显示INSERTed数据。
要显示现有数据和最近插入的数据,您可以执行以下操作:
现在,您将在重新加载的页面中看到现有和最近插入的数据。
提示:要重新加载页面,可以使用rowCount检查是否插入了行:
if($stmt->rowCount() == 1) {
header("Location: index.php");
} else {
// Error
}