2015-12-14 6 views
6

जब उपयोगकर्ता एक बटन क्लिक करता है तो मैं अपनी उपयोगकर्ता तालिका से एक पंक्ति को हटाना चाहता हूं, उपयोगकर्ता को लॉग इन करने की आवश्यकता है, अपना खाता हटाएं।उपयोगकर्ता तालिका से पंक्ति हटाना PHP MYSQL

मैं $ user_id जो '4' से पता चलता है, जो उपयोगकर्ता द्वारा प्रवेश के लिए सही आईडी है echo'd है, तो 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

क्यों अधिक खतरनाक क्वेरी parameterize नहीं; उपयोगकर्ता से हटाएं जहां उपयोगकर्ता_आईडी = $ user_id'? – chris85

+0

आप कहीं भी $ _SESSION ['user_session'] सेट नहीं दिखते हैं, जब तक कि मुझे कुछ याद न हो। इसके अलावा, यह उत्पादन सुरक्षित नहीं है। – markdwhite

+0

मेरे पास user_session एक अलग पृष्ठ पर सेट है, और हाँ यह जगह पर थोड़ा सा है, PHP के लिए बहुत नया है। – Dannad

उत्तर

5

मुझे लगता है कि में उन पंक्ति हटाना चाहते आपकी समस्या आपके प्रपत्र कार्रवाई (teams.php) जो बाद data.Your हटाना कोड एक ही फाइल पर है और तार्किक $ _POST [प्राप्त होगा 'छोड़ें'] इस पृष्ठ में कभी भी सेट नहीं किया जाएगा।

बस अपने फॉर्म एक्शन विशेषता में अपनी टीमों.एफपी को हटाने का प्रयास करें।

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

सलाह का एक और टुकड़ा उपयोग parameterize क्वेरी है जोड़ें। उदाहरण:

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

} 
+0

यह सही मुद्दा था, मैंने आपके उत्तर को पढ़ने से पहले इसे ठीक से समझ लिया: पी। आपकी मदद के लिए बहुत बहुत धन्यवाद – Dannad

+0

मुझे खुशी है कि आप इसे हल करते हैं। : डी –

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; 
      } 

     } 
    }?> 
संबंधित मुद्दे