Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按id获取MYSQL行并在表单中编辑和更新?_Php_Mysql_Forms_Function - Fatal编程技术网

Php 按id获取MYSQL行并在表单中编辑和更新?

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、导

我有一个MYSQL表,每行有编辑链接和删除按钮。编辑链接转到edit_movie.php,它有一个表单。我的问题是表单没有显示任何要更新/编辑的数据。如何从单击的行获取id,或者编写什么函数来获取id。表格只是空白,没有填写任何字段

谁能帮帮我我会很高兴的!这个问题已经解决了三天了,就是无法解决。我是一个PHP初学者

我知道我使用的是过时的mysql函数,我需要检查SQL注入,一旦我开始工作,我就会检查SQL注入

表格信息:

表1名称:电影
字段: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