2013-08-04 2 views
-1

Я недавно сделал PHP, который должен; если щелкнуть ссылку, удалите определенную строку в одной из моих таблиц MYSQL.Не удалять указанный контент из mysql

В приведенном ниже сценарии есть все, кроме ссылки [href=delete_ac.php?id etc...] приводит к странице, но когда страница активирует ее, эхо ERROR вместо удаления строки.

<h1>Members</h1> 
<table> 
    <tr> 
     <th>ID</th> 
     <th>Username</th> 
     <th>E-Mail Address</th> 
     <th></th> 
    </tr> 
    <?php foreach($rows as $row): ?> 
     <tr> 
      <td><?php echo $row['id']; ?></td> 
      <td><?php echo htmlentities($row['username'], ENT_QUOTES, 'UTF-8'); ?></td> 
      <td><?php echo htmlentities($row['email'], ENT_QUOTES, 'UTF-8'); ?></td> 
      <td><a href="delete_ac.php?id=<?php echo $row['id']; ?>">delete</a></td> 
     </tr> 
    <?php endforeach; ?> 
</table> 

delete_ac.php Скрипт ниже, что следует удалить ее, но это не

<?php 

    require("../php/bp-connectionAdmin.php"); 

    $id=$_GET['id']; 

    $query = "DELETE FROM `users` WHERE `id` = $id"; 
    $result = mysql_query($query); 

    if ($result) { 
     echo "Successful"; 
    } else { 
     echo "ERROR"; 
    } 
?> 
+0

echo out 'mysql_error()' после 'mysql_query' и посмотреть, что это за ошибка. Также вы должны дезинфицировать свои входные переменные перед их добавлением к запросам. –

+1

Вы можете использовать 'mysql_error()', чтобы получить * актуальную * ошибку из базы данных, которая должна предоставить информацию о том, в чем проблема. Кроме того, * пожалуйста * прекратите использование библиотеки доступа к данным 'mysql_ *'. * По крайней мере, * обновить до 'mysqli_ * 'или PDO. Используйте эти библиотеки для создания подготовленных инструкций вместо того, чтобы открывать уязвимость SQL-инъекции, которая у вас есть в вашем коде. – David

+1

Также причина, по которой вы должны прекратить использовать функции mysql_ *, состоит в том, что они будут отстранены и будут удалены в будущем. – DeiForm

ответ

0

Есть только идентификатор Числовой? Не будет ли добавление меток кавычек вокруг $ id?

$query = "DELETE FROM `users` WHERE `id`='$id'"; 
mysql_query($query); 

Не уверен ... но отпустите его!

0

Put на линии после $ запроса = «DELETE ..

echo "DELETE FROM `users` WHERE `id` = $id"; 
die; 

Тогда вы увидите, что идет не так. Лично я бы удалить», предполагая, что идентификатор = целое число , и вы будете иметь:

$query = "DELETE FROM users WHERE id=$id"; 

Если нет, то попробуйте, что echood запрос непосредственно в окне базы данных, и вы увидите, что это неправильно

.

Скорее всего, вы должны изменить строку в

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

который также является гораздо более безопасным!

Смежные вопросы