Php 如何从mysql数据库中删除缩略图
我需要一点帮助,我正在尝试删除一个缩略图连同它的标题,超链接,并从mysql数据库嵌入视频。我已经创建了一个后端管理系统来帮助我删除内容。但是,由于某种原因,我收到一条错误消息,说变量id未定义。我不明白为什么我一直收到一条错误消息,说变量id未定义。错误消息在我试图从表中删除图像的行上。这是错误消息: 注意:第53行的C:\xampp\htdocs\display\u image\removescore.php中的未定义变量:id 如何解决此问题 这是admin.php代码:Php 如何从mysql数据库中删除缩略图,php,mysql,mysqli,Php,Mysql,Mysqli,我需要一点帮助,我正在尝试删除一个缩略图连同它的标题,超链接,并从mysql数据库嵌入视频。我已经创建了一个后端管理系统来帮助我删除内容。但是,由于某种原因,我收到一条错误消息,说变量id未定义。我不明白为什么我一直收到一条错误消息,说变量id未定义。错误消息在我试图从表中删除图像的行上。这是错误消息: 注意:第53行的C:\xampp\htdocs\display\u image\removescore.php中的未定义变量:id 如何解决此问题 这是admin.php代码: <?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'] . '&image=' . $row['image1'] . '&name=' . $row['name'] .
'&Link=' . $row['imagelink'] . '&caption=' . $row['caption'] .
'&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"><< 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
数据直接放入查询,如果有人试图利用您的错误,这可能非常有害。