Php 如何从mysql数据库中删除缩略图

Php 如何从mysql数据库中删除缩略图,php,mysql,mysqli,Php,Mysql,Mysqli,我需要一点帮助,我正在尝试删除一个缩略图连同它的标题,超链接,并从mysql数据库嵌入视频。我已经创建了一个后端管理系统来帮助我删除内容。但是,由于某种原因,我收到一条错误消息,说变量id未定义。我不明白为什么我一直收到一条错误消息,说变量id未定义。错误消息在我试图从表中删除图像的行上。这是错误消息: 注意:第53行的C:\xampp\htdocs\display\u image\removescore.php中的未定义变量:id 如何解决此问题 这是admin.php代码: <?php

我需要一点帮助,我正在尝试删除一个缩略图连同它的标题,超链接,并从mysql数据库嵌入视频。我已经创建了一个后端管理系统来帮助我删除内容。但是,由于某种原因,我收到一条错误消息,说变量id未定义。我不明白为什么我一直收到一条错误消息,说变量id未定义。错误消息在我试图从表中删除图像的行上。这是错误消息:

注意:第53行的C:\xampp\htdocs\display\u image\removescore.php中的未定义变量:id

如何解决此问题

这是admin.php代码:

<?php
  require_once('authorize.php');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Guitar Wars - High Scores Administration</title>
  <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
  <h2>Remove Thumbnail Administration</h2>
  <p>Below is a list of all thumbnails. Use this page to remove thumbnails as needed.</p>
  <hr />

<?php
  require_once('appvars.php');
  require_once('connectvars.php');

  // Connect to the database 
  $conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

  // Retrieve the score data from MySQL
  $query = "SELECT * FROM table1 ORDER BY name DESC, caption ASC";
  $data = mysqli_query($conn, $query);

 /// Loop through the array of score data, formatting it as HTML 
  echo '<table>';
  echo '<tr><th>Name</th><th>Date</th><th>Score</th><th>Action</th></tr>';
  while ($row = mysqli_fetch_array($data)) { 
    // Display the thumbnails data
    echo '<tr class="scorerow"><td><strong>' . $row['name'] . '</strong></td>';
    echo '<td>' . $row['caption'] . '</td>';
    //echo '<td>' . $row['score'] . '</td>';
    echo '<td><a href="removethumbnail.php?id=' . $row['id'] . '&amp;image=' . $row['image1'] . '&amp;name=' . $row['name'] . 
    '&amp;Link=' . $row['imagelink'] . '&amp;caption=' . $row['caption'] .
      '&amp;video=' . $row['video'] . '">Remove</a>';

    echo '</td></tr>';
  }
  echo '</table>';   

  mysqli_close($conn);
?>

</body> 
</html>

吉他战争-高分管理
删除缩略图管理
下面是所有缩略图的列表。使用此页面可根据需要删除缩略图


这是removethumbnail.php:

<?php
  require_once('authorize.php');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Remove Thumbnail</title>
  <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
  <h2>Thumbnail removed</h2>

<?php
  require_once('appvars.php');
  require_once('connectvars.php');


  if (isset($_GET['id']) && isset($_GET['name']) && isset($_GET['caption']) && isset($_GET['Link']) && isset($_GET['video']) && isset($_GET['image'])) {
    // Grab the data from the GET
    $id = $_GET['id']; 
    $name = $_GET['name']; 
    $caption = $_GET['caption']; 
    $image = $_GET['image'];
    $video = $_GET['video'];
    $Link = $_GET['Link'];

  }
  else if (isset($_POST['id']) && isset($_POST['name']) && isset($_POST['caption']) && isset($_POST['Link']) && isset($_POST['video']) && isset($_POST['image'])) {
    // Grab the data from the POST
    $id = $_POST['id'];
    $name = $_POST['name']; 
    $caption = $_POST['caption']; 
    $image = $_POST['image'];
    $video = $_POST['video'];
    $Link = $_POST['Link'];
  }
  else {
    echo '<p class="error">Sorry, no thumbnail was specified for removal.</p>';
  }

  if (isset($_POST['submit'])) {
    if ($_POST['confirm'] == 'Yes') {
      // Delete the image file from the server
      @unlink(TN_UPLOADPATH . $image);

      // Connect to the database
      $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 


      // Delete the thumbnail from the database. This line 53 where the error is happening
      $query = "DELETE FROM  table1 WHERE id = $id LIMIT 1";
      mysqli_query($dbc, $query);
      mysqli_close($dbc);

      // Confirm success with the user
      echo '<p>Thumbnail removed</p>';

    }
    else {
      echo '<p class="error">The THUMBNAIL was not removed.</p>';
    }
  }
  else if (isset($id) && isset($name) && isset($caption) && isset($video)) {
    echo '<p>Are you sure you want to delete the following Thumbnails?</p>';
    echo '<p><strong>Name: </strong>' . $name . '<br /><strong>Date: </strong>';
    echo  '<br /><strong>Caption: </strong>' . $caption . '</p>';
    echo '<form method="post" action="removethumbnail.php">';
    echo '<input type="radio" name="confirm" value="Yes" /> Yes ';
    echo '<input type="radio" name="confirm" value="No" checked="checked" /> No <br />';
    echo '<input type="submit" value="Submit" name="submit" />';
    echo '<input type="hidden" name="id" value="' . $id . '" />';
    echo '<input type="hidden" name="name" value="' . $name . '" />';
    echo '<input type="hidden" name="caption" value="' . $caption . '" />';
    echo '</form>';
  }

  echo '<p><a href="admin.php">&lt;&lt; Back to admin page</a></p>';

?>

</body> 
</html>

删除缩略图
删除缩略图
发生错误的原因 在
removethumbnail.php
脚本中,您总是开始尝试获取参数,并且只有当相应的变量都存在时才会填充。因此:

  • 当它第一次被调用时,您有效地从get获取了6个参数,然后检查确认
  • 显然,此时情况并非如此,因此您输出确认表单,添加隐藏输入以更新上述6个参数中的3个
  • 然后再次调用脚本:由于它无法获取6个参数,没有填充任何变量,因此触发
    未定义变量:id
    消息
具有讽刺意味的是,请注意,第一个遇到的未定义变量是
$image
,应该通知您。但是您没有收到关于它的错误消息,因为您不小心使用了@tadman已经指出的
@
抑制错误

如何避免它。。。但不仅如此 显然,根据上面的解释,您必须在确认表单中为3个缺少的参数添加隐藏输入,这足以使脚本按预期工作

但还有一点需要注意:在当前的结构中,您的脚本寻找确认,然后在
confirm==“yes”
的情况下启动真正的过程,即使它无法获取参数 否则,即使缺少参数,也不会触发错误


最后一点:无论如何,您应该已经注意到,您自己的消息“对不起,没有指定要删除的缩略图。”就在PHP错误通知之前打印出来。

只使用id
$row['id']
来携带,然后只检查
$\u REQUEST
是否确实要删除以下缩略图?
可以在客户端处理,如
警告:使用
@
操作符调用方法时不要抑制错误。如果出现问题,您希望了解它,并需要采取纠正措施,为用户显示有用的消息,记录问题,或所有这些等等。如果忽略可能会提醒您出现问题的错误,这也会使调试问题变得更加复杂。警告:在使用
mysqli
时,您应该使用and将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
数据直接放入查询,如果有人试图利用您的错误,这可能非常有害。