#php
#php
Вопрос:
Мои запросы не удаляются из таблицы. Я также хочу, чтобы она возвращалась на первую страницу после удаления.
<html>
<title> Queries</title>
<body>
<h1> List of Queries</h1>
<form method=post action="delete7.php">
<?php
$ebits = ini_get('error_reporting');
error_reporting($ebits ^ E_NOTICE);// Turns off all the notices amp;warnings
mysql_connect("localhost","root","") or die(mysql_error());//Connects to the DB
mysql_select_db("testdb") or die(mysql_error()); //Selects one database
echo "<br />";
$query = "select * from queries ";
$result = mysql_query($query) or die(mysql_error()); //sends a unique query to active database on the server
$count=mysql_num_rows($result);
echo "<table border="1">";
echo "<th><tr><td> </td><td>Name</td><td>Address</td><td>ContactNo</td><td>Query</td></tr></th>";
while($row = mysql_fetch_array($result))
{
echo"<tr>";
echo"<td><input type='checkbox' name='Query[]' value="".$row['queryId'].""> </td>";
echo " <td>" . $row['name'] . "</td><td>" . $row['address'] . "</td><td>" . $row['contactNo'] . "</td><td>" . $row['query'] . "</td>";
echo"</tr>n";
}
?>
<input type="submit" value="Delete" name="Delete"> <br/>
</form>
</body>
</html>
<?php
$conn = mysql_connect("localhost","root","") or die(mysql_error());
$db = mysql_select_db("testdb") or die(mysql_error());
if (isset($_POST['Delete']))
{
foreach ($_POST['Query'] as $checkbox)
{
echo "$checkbox";
$del = mysql_query("DELETE * FROM queries WHERE queryId=
$checkbox") or die(mysql_error());
if($del)
{
echo ("Records Deleted");
}
else
{
echo ("No Way");
}
}
}
?>
Ответ №1:
Ваш запрос на удаление данных неверен. У вас есть *
в запросе на удаление, который не разрешен.
Это должно быть
$del = mysql_query("DELETE FROM queries WHERE queryId=$checkbox")
or die(mysql_error());
Комментарии:
1. Это также может помочь задать правильный запрос:
DELETE FROM queries WHERE queryId=$checkbox
(нет*
после УДАЛЕНИЯ). Кроме того, если вы видите подобный код, пожалуйста, объясните, что такое SQL-инъекция…2. Конерак, почему бы тебе самому не объяснить SQL-инъекции? 🙂
3. Спасибо 🙂 :). Мне просто нужно было убрать звездочку. Можете ли вы сказать мне, какой coe я должен добавить, чтобы вторая страница возвращалась на первую страницу после удаления
4. @teana: вы можете добавить это
if($del) { header('location:url of the page where you want to redirect');die(); }
Ответ №2:
Удалите звездочку из вашего запроса:
DELETE FROM queries WHERE queryId = $checkbox;
Разве вы не получили сообщение об ошибке от mysql_error о синтаксической ошибке?
Кстати, вы не можете вызвать mysql_error без действительного подключения к MySQL. Это означает, что эта строка странная:
mysql_connect("localhost","root","") or die(mysql_error());//Connects to the DB
Рассмотрите возможность создания собственного сообщения об ошибке здесь, например:
mysql_connect("localhost","root","") or die('Could not connect to DB');//Connects to the DB