根据使用PHP在URL上传递的值更新MySQL行

时间:2015-05-27 00:15:40

标签: php html mysql php-5.3

我正在尝试根据传递给页面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。有什么需要改变的吗?

2 个答案:

答案 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)

请检查以下错误: -

  1. 您的所有编码内容和表单代码都在一个文件中,然后您为什么要采取行动。从表单中删除action属性。

  2. 表单方法为POST,但您使用$_GET时将其更改为$_POST

  3. 还可以像这样更改查询: -

    $sql ="SELECT store_name,heading FROM store WHERE id_store='$id_store' ORDER BY id_store";

  4. 注意: - 检查并完成所有这些事情并告诉发生了什么