Прежде чем кто-нибудь скажет, я защищу себя от инъекций SQL сразу после исправления этой ошибки. Я делаю приложение, в котором в базу данных отправляются новостные сообщения. Эта страница удаляет отчет из базы данных.Как использовать переменные PHP в инструкции SQL
Что я пробовал: Все возможные варианты добавления скобок к SQL и речевым меток. Мой учитель по ИКТ, и я смотрел на это почти 2 часа и не могу найти исправление. Я также искал Google и переполнение стека, но я не могу найти ответ.
Хорошо, поэтому отображается правильный report_id, когда я его эхо. Когда я помещаю фактический идентификатор, например 5, отчет удаляется. Но когда я помещаю $ report_id, ничего не удаляется.
Возможно, кто-нибудь скажет мне, какую коррекцию мне нужно сделать, чтобы заставить это работать?
Вот код (EDIT: Это фиксированный код, который я добавил скрытое поле в форме на дне, среди нескольких других небольших изменений (например, вынимая дополнительный тэг формы).):
<?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>Football Central - Remove a Report</title>
</head>
<body>
<h2>Football Central - Remove a News Report</h2>
<?php
require_once('img_details_reports.php');
require_once('connect_db_reports.php');
//Assign variables from admin_reports.php using $_GET
$report_id = $_GET['id'];
if (isset($_POST['submit'])) {
if ($_POST['confirm'] == 'Yes') {
$report_id = $_POST['id'];
// Delete the image file from the server
@unlink(IMAGE_UPLOADPATH . $image);
// Connect to the database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
or die("Unable to connect to the database.");
// Delete the score data from the database
$query = "DELETE FROM news_reports WHERE report_id = '".$report_id."' LIMIT 1"
or die("mysql_query failed - Error: " . mysqli_error());
mysqli_query($dbc, $query) or die("mysql_query failed - Error: " . mysqli_error());
mysqli_close($dbc);
}
}
//Display form to confirm delete
echo '<p>Are you sure you want to delete the news report?</p>';
echo '<form method="post" action="removereport.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="hidden" name="id" value="' . $report_id . '" />';
echo '<input type="submit" value="Submit" name="submit" />';
echo '</form>';
echo '<p><a href="admin_reports.php"><< Back to admin reports page</a></p>';
?>
</body>
</html>
+1 для предварительной утомляемости скучной проповеди SQL-инъекции – imulsion
Как вы отправляете переменную 'id'? – SAVAFA
Я предполагаю, что у вас есть var, submit, confirm и id существует, правильно .... попробуйте сделать эхо каждого из них в начале вашего php-скрипта – Hackerman