Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подскажите где прочитать про удаление даных с базы
 
 автор: gghh   (15.06.2010 в 15:51)   письмо автору
 
 

Всем привет
Народ подскажите где можно посмотреть на реализацию удаление даных с базы. Задумка простая дать возможность пользователю в поле ввода input ввести значение, номер записи и при нажатии кнопки удалить его с базы с подтверждением удаления.

=========
Спасибо
Код не привожу, поскольку кроме пустой формы у меня ничего нет
P.S. сильно не пинайте

  Ответить  
 
 автор: Trianon   (15.06.2010 в 15:54)   письмо автору
 
   для: gghh   (15.06.2010 в 15:51)
 

удаление строк из таблицы БД выполняется SQL-оператором DELETE.
DELETE FROM таблица WHERE условие.

Так что если Вы умеете выводить данные из таблицы, то удалить их сможете всяко.

  Ответить  
 
 автор: gghh   (15.06.2010 в 16:09)   письмо автору
 
   для: Trianon   (15.06.2010 в 15:54)
 

Да спасибо вывести данные через массив я смогу. Вот смотрите есть форма:

<form action="drop.php" method=POST>
Введите значение<input type="text" name="id" >
<input type="submit">
</form>

а далее я в полном ступоре. Не знаю как закодировать drop.php. Конечно я знаю про delete from table wher id=$id но у меня ничего не выходит.
Народ поделитесь простым примером.

  Ответить  
 
 автор: Ирбис   (15.06.2010 в 16:19)   письмо автору
 
   для: gghh   (15.06.2010 в 16:09)
 

<?php
//Защита от SQL-инъекции
$_POST['id'] = intval($_POST['id']);

//Соединяемся с MySQL сервером и выбираем БД
$dbcn mysql_connect($host$user$password);
if(!
$dbcn) exit("<p>Ошибка соединения с БД</p>");
if (!
mysql_select_db($dbname$dbcn) )  exit("<p>Ошибка соединения с БД</p>");

//Формируем запрос на удаление записи из базы
$query "DELETE FROM имя_таблицы WHERE id = $_POST[id] LIMIT 1";

//Удаляем запись из базы
if(!mysql_query($query)) exit("<p>Ошибка удаления записи из базы</p>");

//Потом можно переадресовать пользователя
header("Location: index.php");
?>

  Ответить  
 
 автор: oliss   (15.06.2010 в 16:22)   письмо автору
 
   для: Ирбис   (15.06.2010 в 16:19)
 

не выдаёт ли ошибки синтаксиса?
id = $_POST[id]


$_POST['id'] = intval($_POST['id']); 

может лучше переменная чем сг. массив?

  Ответить  
 
 автор: Ирбис   (15.06.2010 в 16:36)   письмо автору
 
   для: oliss   (15.06.2010 в 16:22)
 

>не выдаёт ли ошибки синтаксиса?
Ошибку не выдает. Мы интерполируем элемент ассоциативного массива по всем правилам - начало и конец строки обозначаются двойными кавычками, элемент массива в квадратных скобрах указан без кавычек. С СУБД тоже проблем быть не должно - предполагается, что поле id в таблице числовое, поэтому значение поля в кавычки брать не нужно.

>может лучше переменная чем сг. массив?
Это уже на вкус и цвет. Мне удобнее так
$_POST['id'] = intval($_POST['id']); 

  Ответить  
 
 автор: Trianon   (15.06.2010 в 16:38)   письмо автору
 
   для: Ирбис   (15.06.2010 в 16:19)
 

защиту от SQL-инъекции имеет смысл делать непосредственно рядом с текстом SQL-запроса, а не где-то сверху.
В идеале - в том же выражении, что и сам SQL-текст .
Иначе очень легко столкнуться с ситуацией, когда между точкой защиты и точкой формирования SQL-текста, Вы сами (или другой разработчик) случайно поменяете значение "горячей" переменной, и защита окажется скомпрометированной.

  Ответить  
 
 автор: Ирбис   (15.06.2010 в 20:14)   письмо автору
 
   для: Trianon   (15.06.2010 в 16:38)
 

Спасибо за совет. В будущем будем поступать именно так.

  Ответить  
 
 автор: gghh   (15.06.2010 в 16:42)   письмо автору
 
   для: Ирбис   (15.06.2010 в 16:19)
 

Все сделал как Вы написали. Да спасибо за пример. Ничего не работает. Это какая-то фигня. Что делать, в чем может быть проблема? Почему-то ошибка об удаление не выводит. Я в смятение.

  Ответить  
 
 автор: psychomc   (15.06.2010 в 16:49)   письмо автору
 
   для: gghh   (15.06.2010 в 16:42)
 

запрос оставили в таком же виде?

"DELETE FROM имя_таблицы WHERE id = $_POST[id] LIMIT 1"

?? ))

  Ответить  
 
 автор: gghh   (15.06.2010 в 16:53)   письмо автору
 
   для: psychomc   (15.06.2010 в 16:49)
 

Все работает, спасибо. Просто немного ошибся, иду учить матчасть.

============
Еще раз спасибо за ответы.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования