初学者表单,带有“更新自”和“删除”按钮

时间:2016-02-16 04:44:13

标签: php mysql post

我是PHP的初学者。我看了一个教程来创建一个修改我的wamp创建的mysql数据库表的表单。首先复制视频,然后从头开始制作我自己的表并尝试升级它。

我的添加行正常工作,但更新和删除没有。我认为WHERE子句不正确,引用reg_id

我创建了一个唯一的主键,它自动递增并且无法修改;这是我想要在进行更改时引用的内容(因为它无法更改)。

if (isset($_POST['update'])){
$UpdateQuery = "UPDATE register SET First_Name='$_POST[first_name]', Last_Name='$_POST[last_name]', Breed='$_POST[breed]', Weight='$_POST[weight]', Age='$_POST[age]', Sex='$_POST[sex]' WHERE '$_POST[reg_id]'='$_POST[reg_id]'";
mysqli_query($con,$UpdateQuery);};

if (isset($_POST['delete'])){
$DeleteQuery = "DELETE FROM register WHERE reg_id='$_POST[reg_id]'";
mysqli_query($con,$DeleteQuery);};

以下是表单所在的其余部分:

while($record=mysqli_fetch_array($myData)){
  echo "<form action=register.php method=post>";
  echo "<tr>";
  echo "<td>" . $record['reg_id'] . " </td>";
  echo "<td>" . "<input type=text name=first_name value=" . $record['First_Name'] . " </td>";
  echo "<td>" . "<input type=text name=last_name value=" . $record['Last_Name'] . " </td>";
  echo "<td>" . "<input type=text name=breed value=" . $record['Breed'] . " </td>";
  echo "<td>" . "<input type=int name=weight value=" . $record['Weight'] . " </td>";
  echo "<td>" . "<input type=int name=age value=" . $record['Age'] . " </td>";
  echo "<td>" . "<input type=text name=sex value=" . $record['Sex'] . " </td>";
  echo "<td>" . "<input type=submit name=update value=update" . " </td>";
  echo "<td>" . "<input type=submit name=delete value=delete" . " </td>";
  echo "</tr>";
  echo "</form>";
}

请帮我解决。

enter image description here

3 个答案:

答案 0 :(得分:0)

您使用的$_POST没有'

试试这个:{$_POST['first_name']}并根据此替换所有$_POST

因此您的更新查询将如下所示:

"UPDATE register SET First_Name='{$_POST['first_name']}', Last_Name='{$_POST['last_name']}', Breed='{$_POST['breed']}', Weight='{$_POST['weight']}', Age='{$_POST['age']}', Sex='{$_POST['sex']}' WHERE reg_id='{$_POST['reg_id']}'";

没有名称为reg_id的字段,因此您的$_POST['reg_id']将无效。另请更改您的位置条件。您在where condition中匹配相同的值。

您的删除查询将是:

"DELETE FROM register WHERE reg_id='{$_POST['reg_id']}'";

您的查询已打开以进行sql注入。请参阅:How can I prevent SQL injection in PHP?

答案 1 :(得分:0)

显示页面

while($record = mysqli_fetch_array($myData)) {
            echo "<table>";
            echo "<tr>";
            echo "<td>".$record['reg_id']."</td>";
            echo "<td>".$record['First_Name']."</td>";
            echo "<td>".$record['Last_Name']."</td>";
            echo "<td>".$record['Breed']."</td>";
            echo "<td>".$record['Weight']."</td>";
            echo "<td>".$record['Age']."</td>";
            echo "<td>".$record['Sex']."</td>";
            echo "<td><a href='edit.php?reg_id=".$record['reg_id']."'>EDIT</a></td>";
            echo "<td><a href='delete.php?reg_id=".$record['reg_id']."'>DELETE</a></td>";
            echo "</tr>";
            echo "</table>";
        }

<强> delete.php

  <?php 
    if (isset($_POST['delete'])){
    $DeleteQuery = "DELETE FROM `register` WHERE `reg_id`={$_GET['reg_id']}'";
    mysqli_query($con,$DeleteQuery);
   header("Location: your display page");
};
    ?>

修改表单

while($record = mysqli_fetch_array($myData)) {
    echo '<form action="edit.php" method="Post">
            <input type="text" name="First_Name" value="'.$record['reg_id'].'"/>
            <input type="text" name="First_Name" value="'.$record['First_Name'].'"/>
            <input type="text" name="Last_Name" value="'.$record['Last_Name'].'"/>
            <input type="text" name="Breed" value="'.$record['Breed'].'"/>
            <input type="text" name="Weight" value="'.$record['Weight'].'"/>
            <input type="text" name="Age" value="'.$record['Age'].'"/>
            <input type="text" name="Sex" value="'.$record['Sex'].'"/>
            <imput type="submit" value="save" name="submit" />
        </form>';
    }

<强> edit.php

       if (isset($_POST['update'])){
        $UpdateQuery = "UPDATE `register` SET `First_Name`='{$_POST['first_name']}', `Last_Name`='{$_POST['last_name']}', `Breed`='{$_POST['breed']}', Weight='{$_POST['weight']}', `Age`={$_POST['age']}, Sex='{$_POST['sex']}' WHERE `reg_id`={$_GET['reg_id']}";
        mysqli_query($con,$UpdateQuery);
        header("Location: your display page");
};

答案 2 :(得分:0)

if (isset($_POST['update'])){
$UpdateQuery = "UPDATE register SET First_Name='".$_POST['first_name']."',Last_Name='".$_POST['last_name']."', Breed='".$_POST['breed']."', Weight='".$_POST['weight']."', Age='".$_POST['age']."', Sex='".$_POST['sex']."' WHERE reg_id ='".$_POST['reg_id']."'";
mysqli_query($con,$UpdateQuery);
};

if (isset($_POST['delete'])){
$DeleteQuery = "DELETE FROM register WHERE reg_id='".$_POST['reg_id']."'";
mysqli_query($con,$DeleteQuery);
};

应该用&#39; 括起来,这是可选的。隐藏的内容会更好

echo "<td><input type='hidden' name='reg_id' value='".$record['reg_id']."'></td>";
echo "<td><input type='submit' name='update' value='update'></td>";
echo "<td><input type='submit' name='delete' value='delete'></td>";