2015-12-14 2 views
6

Я хотел бы удалить строку из таблицы моих пользователей, когда пользователь нажимает кнопку, пользователь должен войти в систему, чтобы удалить свою собственную учетную запись.Удаление строки из таблицы пользователей PHP MYSQL

Я echo'd в $ user_id, который показывает «4», который является правильным идентификатором для зарегистрированного пользователя, поэтому user_id = $ user_id

Это страница, которую я имею, который удерживает кнопку, которая Я хочу, чтобы удалить строку пользователей в базе данных

<?php 
include_once 'dbconfig.php'; 
if(!$user->is_loggedin()) 
{ 
$user->redirect('index.php'); 
} 
$user_id = $_SESSION['user_session']; 

    if(isset($_POST['leave'])){ 
    $stmt = $DB_con->prepare("DELETE FROM users WHERE user_id = $user_id "); 
     $stmt->execute(); 
    } 
$stmt = $DB_con->prepare("SELECT * FROM users WHERE user_id=:user_id"); 
$stmt->execute(array(":user_id"=>$user_id)); 
$userRow=$stmt->fetch(PDO::FETCH_ASSOC); 
?> 

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" type="text/css" /> 
<link rel="stylesheet" href="style.css" type="text/css" /> 
<title>Welcome - <?php print($userRow['user_email']); ?></title> 
</head> 

<body> 

<div class="header"> 

    <div class="right"> 
    <label><a href="logout.php?logout=true"><i class="glyphicon glyphicon-log-out"></i> logout</a></label> 
    </div> 
</div> 
<div class="content"> 

Welcome <?php print($userRow['user_name']); ?> <br> 
<?php print($userRow['team_name']);?><br> 
Rank <?php print($userRow['user_rank']); ?> <br> 
<a href="players.php">Players</a> 
<a href="teams.php">Teams</a> 

<form action='teams.php' method='post'> 
<input type='submit' name='leave' value='Delete Profile'/> </form> 

<?php echo $user_id?> 

</div> 
</body> 
</html> 
+0

Почему не параметризировать более опасным запрос; 'УДАЛИТЬ ОТ пользователей WHERE user_id = $ user_id'? – chris85

+0

Кажется, вы не устанавливаете $ _SESSION ['user_session'] нигде, если я не пропущу что-то. Кроме того, это не безопасное производство. – markdwhite

+0

У меня есть user_session, установленный на другой странице, и да, это немного повсюду, очень новое для php. – Dannad

ответ

5

Я думаю, ваша проблема в том, ваша форме действия (teams.php), который получит сообщение data.Your удалить код на тот же файл и логически $ _POST [ 'leave'] никогда не будет задано на этой странице.

Просто попробуйте удалить команду teams.php в атрибуте действия формы.

<form action='' method='post'> 
<input type='submit' name='leave' value='Delete Profile'/> </form> 

или в файле teams.php добавить свой код удаления

//Make sure you have started the session before using it 
$user_id = $_SESSION['user_session']; 

if(isset($_POST['leave'])){ 
    $stmt = $DB_con->prepare("DELETE FROM users WHERE user_id = $user_id "); 
     $stmt->execute(); 
} 

Другая часть посоветуйте является использование Параметрирование запроса. Пример:

if(isset($_POST['leave'])){ 
    $stmt = $DB_con->prepare("DELETE FROM users WHERE user_id = ? "); 
     $stmt-> bindParam(1,$user_id); 
     $stmt->execute(); 

} 
+0

Это была точно проблема, я только что понял это, прежде чем я прочитал ваш ответ: P. Большое спасибо за вашу помощь. – Dannad

+0

Im рад, что вы ее решили. : D –

0
<?php $servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} ?>  

<a href="?id=<?php echo $id;?>" onclick="return confirm('Are you sure?')">Delete</a> 

    <?php if(isset($_GET['id'])){ 
     $user_id = $_SESSION['user_session']; 
     $id=$_GET['id']; 
     if($id==$user_id){ 
      $sql = "DELETE FROM Tablename WHERE id='$id'"; 
      if ($conn->query($sql) === TRUE) { 
       echo "Record deleted successfully"; 
      } else { 
       echo "Error deleting record: " . $conn->error; 
      } 

     } 
    }?> 
Смежные вопросы