Удаление записей из базы данных с помощью Ajax-запроса

Я использую php / mysql и protype.js для удаления записи из таблицы. Проблема в том, что запись в базе данных не удаляется.

.на PHP:
       <a href="javascript: deleteId('<?php echo $studentVo->id?>')">Delete</a></td>

скрипт

   function deleteId(id)
   {
       alert("ID : "+id);
       new Ajax.Request('delete.php?action=Delete&id='+id,{method:'post'});
       $(id).remove(); // because <tr id='".$row[id]."'> :)

   }

удалить.в PHP

     <?php
      /* Database connection */
      include('configuration.php');
      echo "hello,...";
      if(isset($_POST['id'])){
          $ID = $_POST['id'];
          $sql = 'DELETE FROM student where id="'.$ID.'"';
          mysql_query($sql);
      } 
      else { echo '0'; }
     ?>

alert("ID : "+id); работает правильно, но код после этого не будет.

3 ответов


вы используете запрос GET, от JS:

{method:'get'}

и ваш PHP-код использует данные, которые, по его мнению, поступают как POST:

$ID = $_POST['id'];

вы должны использовать тот же метод с обеих сторон.

(поскольку вы изменяете / удаляете данные, вы, вероятно, должны использовать POST)


Как sidenote, вы должны определенно escape / protected/проверить данные, которые вы используете в SQL-запросе, чтобы избежать SQL-инъекций, например, intval как вы работаете с целым числом ; нужно использовать использования mysql_real_escape_string если вы работаете со строкой.

другим способом было бы прекратить использовать старый


похоже, что ваш запрос ajax использует GET, но ваш скрипт удаления пытается получить идентификатор через POST. Попробуйте установить {method:'get'} до {method:'post'}.


изменить удалить.php такой:

<?php
      /* Database connection */
      include('configuration.php');
      echo "hello,...";
      if(isset($_GET['id'])){
          $ID = $_GET['id'];
          $sql = 'DELETE FROM student where id="'.$ID.'"';
          mysql_query($sql);
      } 
      else { echo '0'; }
     ?>

или, альтернативно, вы используете $_REQUEST вместо $_GET (или $_POST в первом примере), поскольку он объединяет массивы $_GET и $_POST.