Php 按id获取MYSQL行并在表单中编辑和更新?
我有一个MYSQL表,每行有编辑链接和删除按钮。编辑链接转到edit_movie.php,它有一个表单。我的问题是表单没有显示任何要更新/编辑的数据。如何从单击的行获取id,或者编写什么函数来获取id。表格只是空白,没有填写任何字段 谁能帮帮我我会很高兴的!这个问题已经解决了三天了,就是无法解决。我是一个PHP初学者 我知道我使用的是过时的mysql函数,我需要检查SQL注入,一旦我开始工作,我就会检查SQL注入 表格信息: 表1名称:电影Php 按id获取MYSQL行并在表单中编辑和更新?,php,mysql,forms,function,Php,Mysql,Forms,Function,我有一个MYSQL表,每行有编辑链接和删除按钮。编辑链接转到edit_movie.php,它有一个表单。我的问题是表单没有显示任何要更新/编辑的数据。如何从单击的行获取id,或者编写什么函数来获取id。表格只是空白,没有填写任何字段 谁能帮帮我我会很高兴的!这个问题已经解决了三天了,就是无法解决。我是一个PHP初学者 我知道我使用的是过时的mysql函数,我需要检查SQL注入,一旦我开始工作,我就会检查SQL注入 表格信息: 表1名称:电影 字段:id(主键,AI)、标题、发行年份、流派id、导
字段:id(主键,AI)、标题、发行年份、流派id、导演 表2名称:类别
字段:类型id(主键,AI),类型 他们和我之间有着异国情调 以下是index.php文件中的代码
<?php
require('movie.inc.php');
if ( isset($_GET['delete']) && isset($_GET['id']) ){
if ( delete_movie_by_id($_GET['id']) ){ //it's 100% safe
die('Movie has been removed. Refresh the page now'); // or the like
} else {
echo 'Sorry movie could not be deleted'; // could not - handle here
}
}
include 'add_movie.php';
?>
<!DOCTYPE html>
<html>
<head>
<title>My movie library</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="mall.css" />
</head>
<body>
<table>
<tr>
<th>Title</th>
<th>Release year</th>
<th>Genre</th><th>Director</th>
<th>Update</th>
<th>Delete</th>
</tr>
<?php foreach (get_all_movies() as $index => $row) : ?>
<tr>
<td><?php echo $row['title'];?></td>
<td><?php echo $row['release_year']; ?></td>
<td><?php echo $row['genre'];?></td>
<td><?php echo $row['director'];?></td>
<td><a href='<?php printf('edit_movie.php?edit=%s', $row['id']);?>'>Edit</a></td>
<td>
<form action="index.php" method="GET">
<input type="hidden" name="delete" value="yes" />
<input type="hidden" name="id" value="<?php echo $row['id'];?>" />
<input type="submit" value="Delete" />
</form>
</td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
<?php
require_once('connect.inc.php');
function get_all_movies(){
$query = "SELECT * FROM movies m INNER JOIN categories c ON m.genre_id = c.genre_id";
$result = mysql_query($query);
if ( ! $result ){
return false;
} else {
$return = array();
while ($row = mysql_fetch_assoc($result)){
$return[] = array('director' => $row['director'], 'genre' => $row['genre'], 'release_year' => $row['release_year'], 'title' => $row['title'], 'id' => $row['id']);
}
return $return;
}
}
function delete_movie_by_id($id){
return mysql_unbuffered_query(sprintf("DELETE FROM `movies` WHERE id='%s' LIMIT 1", mysql_real_escape_string($id)));
}
if ( isset($_POST['delete'], $_POST['id']) ){
delete_movie_by_id($_POST['id']);
}
?>
在edit_movie.php
中,看起来您并没有通过表单查看电影。在movie.inc.php
中需要类似的内容:
function get_movie_to_edit($id) {
$query = "SELECT * FROM movies m INNER JOIN categories c ON m.genre_id = c.genre_id WHERE id = $id";
$result = mysql_query($query);
if ( ! $result ){
return false;
} else {
while ($row = mysql_fetch_assoc($result)){
$return = array('director' => $row['director'], 'genre' => $row['genre'], 'release_year' => $row['release_year'], 'title' => $row['title'], 'id' => $row['id']);
}
return $return;
}
}
然后在edit_movie.php中,您需要调用这个函数。类似于
if(isset($_GET['edit'])) {
$movie = get_movie_to_edit($_GET['edit']);
}
当然,正如您所提到的,您需要清理大量代码以防止注入,并检查是否存在这样的场景,例如,您可以使用edit\u movie.php
,而ID ro edit不存在,但这是基本要点
然后,您还可以在edit_movie.php
中编辑表单中的值,以反映新数组,如下所示:
<form action="edit_movie.php" method="post">
<input type="hidden" name="id" value="<?php echo $movie['id']; ?>" /> <br>
Title:<br> <input type="text" name="title" value="<?php echo $movie['title']; ?>" /> <br>
.... the rest of your form inputs
</form>
你好谢谢你的评论!所以我刚试过你的代码,我想它和我以前试过的几乎一样,我在所有表单字段中都得到了相同的错误:
注意:未定义的索引:C:\Program Files(x86)\EasyHP-12.1\www\test\edit\u movie.php第40行的标题
你知道怎么做吗?如何定义“标题”等。请参阅我的编辑。构建$return数组时,将其设置为:$return=…
而不是$return[]=…
噢,天哪!!!它正在工作!!!唯一的事情是。在edit_movie.php中,如何编写单选按钮的值?关于title etc its value=“否,我仍在尝试单选按钮的工作:(使用您编写的代码,我遇到了一个未定义文件结尾的错误,或者类似的错误,现在我只是尝试更改不同的逗号等,但它不起作用……每个回音后是否应该有一个结尾?)天哪,4年后这个问题被编辑。
<form action="edit_movie.php" method="post">
<input type="hidden" name="id" value="<?php echo $movie['id']; ?>" /> <br>
Title:<br> <input type="text" name="title" value="<?php echo $movie['title']; ?>" /> <br>
.... the rest of your form inputs
</form>
<input type="radio" name="genre_id" value="1"<?php if($movie['genre'] == 1) { echo ' checked'; } ?> />Action<br>
<input type="radio" name="genre_id" value="2"<?php if($movie['genre'] == 2) { echo ' checked'; } ?> />Comedy<br>
.... and so on