2015-06-29 3 views
-4

Он просто не работает; это мое удаление:php удаление строки строки

<code><?php 

$username = $_GET["username"]; 

include 'config.php'; 

mysql_query ("DELETE FROM users 
     WHERE username = ".$username); 
     echo 'succesfully deleted user'; 
//header("Location: panel.php"); 

?></code> 

и это моя строка файла

<code><?php 
          $query = 'SELECT * FROM users'; 
          $result = mysql_query($query); 
          while ($row = mysql_fetch_array($result)) { 
           echo ' <tr> '; 
           echo ' <td> '; 
           echo $row['username']; 
           echo ' <td> '; 
           echo $row['time']; 
           echo ' <td> '; 
           echo $row['amount']; 
           echo ' <td> '; 
           echo $row['price']; 
           echo '<form action="/delete_user.php" method="POST">'; 
           echo '<td>'; 
           echo '<input type="submit" name="'.$row['username'].'" value="delete"/>'; 
           echo '</form>'; 
          } 
          ?></code> 

Когда я иду в delete_user.php?username=test это говорит эхо, но это на самом деле не удалить пользователя из таблицы?

+3

'1. Ваш код уязвим для SQL-инъекции '' 2. Вы делаете POST и пытаетесь получить данные как $ _GET' –

+2

3. хотя mysql-запрос нуждается в цитировании для строк – donald123

+0

mysql_query ("УДАЛИТЬ ОТ пользователей WHERE username =". $ Username) или die ("query not working") Попробуйте если он работает или нет – rohitr

ответ

1

Добавить кавычки вокруг $username и дезинфицировать вход:

mysql_query ("DELETE FROM users 
     WHERE username = '".mysql_real_escape_string($username)."'"); 
     echo 'succesfully deleted user'; 

Кстати, на этом этапе вы должны забыть о mysql_ функции и перейти к PDO или mysqli подготовленных заявлений. В противном случае вы делаете свой код уязвимым и устаревшим.

+0

спасибо, что работал, но как я могу сделать это так, когда я нажимаю кнопку, которую он удаляет, теперь он удаляется, перейдя по ссылке – user3575640

+0

, добавьте ввод текста в форму и прочитайте ее значение '$ _POST' –

0

Вы не указали переменную $username в своем коде. Для успешного выполнения запроса, вы должны процитировать переменную $username, как так

mysql_query ("DELETE FROM users WHERE username = '".$username. "'"); 
0
<?php 
if (isset($_POST["username"])){ 
    $username = mysql_real_escape_string($_POST["username"]); 
    include 'config.php'; 

    if(mysql_query ("DELETE FROM users WHERE username = '{$username}'")) 
     echo 'successfully deleted user'; 
    else 
     echo 'query error: '.mysql_error(); 
} 
?> 

P.S. Ваш код восприимчив к SQL-инъекции (поиск Google об этом). Также mysql_query() устарел и будет удален. http://php.net/manual/en/function.mysql-query.php

1

Вероятно потому, что вы не поставили свое имя пользователя в кавычках:

$query = sprintf("DELETE FROM users WHERE username = '%s';", $username); 
mysql_query($query); 
echo 'succesfully deleted user'; 

Однако это открыто для SQL инъекций в качестве имени пользователя может быть представлен, содержащий цитаты и манипулировать базой данных. Чтобы быть в безопасности, то лучше, чтобы избежать данных перед работой с базой данных с ним:

$escapedUsername = mysql_real_escape_string($username); 
$query = sprintf("DELETE FROM users WHERE username = '%s';", $escapedUsername); 
mysql_query($query); 
echo 'succesfully deleted user'; 

Таким образом, вы обезопасите себя от атак SQL. Будьте предупреждены, что функции mysql_ * устарели (скоро их полностью удалить), поэтому потенциально исследуйте методы mysqli_ или PDO для будущей связи с базой данных.

Goodluck.

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