2015-12-14 14 views
6

Ich möchte eine Zeile aus meiner Benutzertabelle löschen, wenn der Benutzer auf eine Schaltfläche klickt, der Benutzer muss angemeldet sein, um sein eigenes Konto zu löschen.Zeile aus der Benutzertabelle löschen PHP MYSQL

Ich habe den $ user_id echo'd die ‚4‘ zeigt, das die korrekte ID für den angemeldeten Benutzer ist, so user_id = $ user_id

Dies ist die Seite, die ich habe, die die Schaltfläche hält die ich möchte die Benutzer Zeile in der Datenbank

<?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

Warum nicht parametrieren desto gefährlicher die Abfrage; 'DELETE FROM Benutzer WHERE user_id = $ user_id'? – chris85

+0

Sie scheinen $ _SESSION ['user_session'] nirgends zu setzen, es sei denn, ich verpasse etwas. Dies ist auch nicht produktionssicher. – markdwhite

+0

Ich habe die user_session auf einer anderen Seite eingestellt, und ja, es ist ein bisschen überall, sehr neu zu PHP. – Dannad

Antwort

5

ich denke, Ihr Problem ist Ihre Form Aktion (teams.php) löschen, die die Post data.Your löschen erhalten Code ist auf der gleichen Datei und logisch $ _POST [ 'verlassen'] wird niemals auf dieser Seite gesetzt.

Versuchen Sie einfach Ihre teams.php in Ihrem Formular-Aktionsattribut zu entfernen.

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

oder in Ihrer teams.php Datei Ihres Löschcode

//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(); 
} 

Ein weiteres Stück der Beratung hinzufügen Verwendung parametrierbaren Abfrage. Beispiel:

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

} 
+0

Das war das genaue Problem, ich habe es gerade herausgefunden, bevor ich deine Antwort gelesen habe: P. Vielen Dank für Ihre Hilfe – Dannad

+0

Ich bin froh, dass Sie es lösen. : 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; 
      } 

     } 
    }?> 
Verwandte Themen