我正在尝试根据传递给页面url的值更新Mysql行。
但是当我以html格式提交按钮时,我收到错误Notice: Undefined index: id_store in C:\xampp\htdocs\store\php\update.php on line 29
。
这是我的代码:
<?php
require 'db.php';
if(isset($_GET['id_store'])){
$id_store=$_GET['id_store'];
$sql ="SELECT store_name,heading FROM store ORDER BY id_store='$id_store'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$store_name = $row['store_name'];
$heading = $row['heading'];
}
if(isset($_POST['btn-update']))
{
// variables for input data
$store_name_ = $_POST['store_name'];
$heading_ = $_POST['heading'];
// variables for input data
$id=$_GET['id_store'];
// sql query for update data into database
$sql_query = "UPDATE store SET store_name='$store_name_',heading='$heading_' WHERE id_store='$id'";
$conn->query($sql_query);
// sql query for update data into database
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CRUD Operations With PHP and MySql - By Cleartuts</title>
</head>
<body>
<center>
<div >
<form method="post" action="update.php">
<table align="center">
<tr>
<td><input type="text" name="store_name" placeholder="Store Name" value="<?php echo $store_name; ?>" required /></td>
</tr>
<tr>
<td><input type="text" name="heading" placeholder="Store Heading" value="<?php echo $heading; ?>" required /></td>
</tr>
<tr>
<td>
<button type="submit" name="btn-update"><strong>UPDATE</strong></button>
</td>
</tr>
</table>
</form>
</div>
</center>
</body>
</html>
我在第$id=$_GET['id_store'];
行
我认为当我提交按钮时,由于哪个SQL查询获取空值,表单将被定向到没有id_store
的update.php。有什么需要改变的吗?
答案 0 :(得分:2)
id_store
值。ORDER BY
,如WHERE
。id_store
。您的表单将转到update.php。删除ACTION
。修改了选择查询代码:
$sql ="SELECT store_name,heading FROM store WHERE id_store='$id_store' ORDER BY id_store";
您的表格应该是:
<form method="post" action="">
因此,当您从localhost/store/php/update.php?id_store=36
开始按下提交按钮时,它仍会转到localhost/store/php/update.php?id_store=36
,而不仅仅是localhost/store/php/update.php
。
提交后,由于您在网址中保留id_store
,因此未定义的错误将会消失。
在isset()
内,以便用户无法刷新页面并重新提交表单,只需将其放在结束括号之前:
header("LOCATION:update.php?id_store=".$_GET["id_store"]);
答案 1 :(得分:1)
请检查以下错误: -
您的所有编码内容和表单代码都在一个文件中,然后您为什么要采取行动。从表单中删除action
属性。
表单方法为POST
,但您使用$_GET
时将其更改为$_POST
。
还可以像这样更改查询: -
$sql ="SELECT store_name,heading FROM store WHERE id_store='$id_store' ORDER BY id_store";
注意: - 检查并完成所有这些事情并告诉发生了什么