[英]PHP AJAX - data update/edit inserts as new data instead of updating
[英]Edit form creates new data instead php
我是php的新手,试图'google'这个问题,但没有给我任何帮助。 我有index.php,它具有创建新数据的形式,并显示来自sql的表数据以及edit.php上的链接以编辑数据。 在edit.php中,我只有表格。 因此,问题在于edit.php在数据库中创建了新数据,而不是更改我通过id获得的数据。 试图直接在phpmyadmin中放置请求,并且一切正常。
edit.php
include '../connect.php';
include '../errors.php';
include 'view_edit.php';
var_dump($id = $_GET['edit']);
if (isset($_POST['submit'])){
if (empty($_POST['username'])){
$errors = "Впишите ваше имя";
}elseif (empty($_POST['email'])){
$errors = "Впишите ваш email";
}elseif (empty($_POST['task'])){
$errors = "Впишите задание";
}elseif (empty($_FILES['image']['name'])){
$errors = "Вставьте картинку";
}else{
$id = $_GET['edit'];
$username = $_POST['username'];
$email = $_POST['email'];
$task = $_POST['task'];
$image = $_FILES['image']['name'];
$target = "../uploads/".basename($_FILES['image']['name']);
$sql = "UPDATE `tasks` SET `username`='$username', `email`='$email',
`task`='$task', `image`='$image' WHERE `id`='$id'";
mysql_query($db. $sql);
move_uploaded_file($_FILES['image']['tmp_name'], $target);
header('location: index.php');
}
}
在var_dump($id = $_GET['edit']);
我得到正确的数据ID。
来自view_edit.php的表格
<form method="post" action="index.php" class="input_form" enctype="multipart/form-
data">
<input type="text" name="username" placeholder="Введите Имя"
class="username_input">
<input type="email" name="email" placeholder="Введите email"
class="email_input">
<br>
<br>
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
<input type="text" name="task" placeholder="Введите задание"
class="task_input">
<p>Сменить изображение</p>
<input type="file" name="image" multiple accept="image/png, image/jpeg,
image/gif">
<br>
<button type="submit" name="submit" id="add_btn">Изменить
запись</button>
</form>
来自index.php的表
while ($row = mysqli_fetch_assoc($tasks)) { ?>
<tr>
<td class="username"> <?php echo $row['username']; ?> </td>
<td class="email"> <?php echo $row['email']; ?> </td>
<td class="task"> <?php echo $row['task']; ?> </td>
<td> <?php echo "<img src='../uploads/".$row['image']."'>"; ?> </td>
<td>
<a class="delete" href="index.php?del_task=<?php echo $row['id'] ?>">x</a>
<br><br>
<a class="edit" href="edit.php?edit=<?php echo $row['id']; ?
>">Редактировать</a>
</td>
</tr>
<?php } ?>
并从view_index.php形成
<form method="post" action="index.php" class="input_form"
enctype="multipart/form-data">
<input type="text" name="username" placeholder="Введите ваше имя"
class="username_input" id="username">
<input type="email" name="email" placeholder="Введите ваш email"
class="email_input" id="email">
<br><br>
<input type="text" name="task" placeholder="Введите задание"
class="task_input" id="task">
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
<p>Добавить изображение</p>
<input type="file" name="image" multiple accept="image/png, image/jpeg,
image/gif">
<br>
<button type="submit" name="submit" id="add_btn">Добавить задачу</button>
<button type="submit" name="preview" id="preview">Предварительный
просмотр</button>
</form>
尝试在view_edit.php
中的表单action
中添加一些代码,并始终使用表单的输入提交按钮
<form method="post" action="edit.php?edit=<?php echo $id; ?>" class="input_form" enctype="multipart/form-
data">
<input type="text" name="username" placeholder="Введите Имя"
class="username_input">
<input type="email" name="email" placeholder="Введите email"
class="email_input">
<br>
<br>
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
<input type="text" name="task" placeholder="Введите задание"
class="task_input">
<p>Сменить изображение</p>
<input type="file" name="image" multiple accept="image/png, image/jpeg,
image/gif">
<br>
<input type="submit" name="edit_task" id="add_btn"
value="Изменить запись"/>
删除include 'view_edit.php';
从edit.php并使用此代码,告诉我会发生什么
view_edit.php表单的动作属性设置为index.php,因此,除非edit.php包含在index.php中,否则提交的表单将不会由edit.php而是由index.php处理。
无论如何,MySQL中的UPDATE查询无法创建新记录,因此插入必须发生在未在此处发布的某些代码中的其他位置。
旁注:您的代码非常不安全。 Google SQL注入。 人们可能会使用该表格删除您的数据库或造成其他危害。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.