2013-10-09 4 views
-1

J'utilise une méthode ajax pour appeler un script PHP qui devrait supprimer une ligne de ma base de données en cliquant sur un bouton avec l'identifiant 'delete'.MySQL DELETE Requête en PHP non exécutable

$('#delete').click(function() { 
    var id = parseInt($('#content').attr('data-name')); 
    // The row in my database has the type integer 
    // Doing alert(id) correctly returns the value 

$.ajax({ 
    url : './php/delete.php', 
    type: 'POST', 
    data : id, 
    success: function() 
    { 
     alert('success deleting ' + id); 
     location.reload(); 
     // These both get called correctly, but the row is not actually getting deleted 
    } 
}); 

}); 

Mon code PHP est

<?php 
$con=mysqli_connect("localhost","root","tulula15","content_test"); 

if (mysqli_connect_errno()) 
    { 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

mysqli_query($con,"DELETE FROM htmlcontent WHERE id='$_POST[id]'"); 

mysqli_close($con); 
?> 

L'exécution de la même requête dans phpMyAdmin supprime correctement la ligne

DELETE FROM htmlcontent WHERE id=2 

Ainsi, la ajax retourne avec succès, mais la requête n'est pas en cours d'exécution.

Si quelqu'un pouvait me aider à résoudre ce problème, je vous serais très reconnaissant de bien vouloir ..

+5

Vous êtes extrêmement vulnérable à l'injection SQL. –

+0

1. utiliser la gestion des erreurs mysqli lors de l'exécution de la requête et 2. jeter un oeil sur les fichiers journaux des serveurs. – arkascha

+0

Utilisez l'instruction prepare pour paramétrer la variable $ _POST ['id'] – aarryy

Répondre

4

Vous ne configurez pas les données correctement dans votre appel AJAX. Pour ce faire:

$.ajax({ 
    url : './php/delete.php', 
    type: 'POST', 
    data : {id:id},   // use a map like this to set up the POST data 
    success: function() 
    { 
    alert('success deleting ' + id); 
    location.reload(); 
    // These both get called correctly, but the row is not actually getting deleted 
    }  
}); 
+0

Merci, cela l'a résolu –

+0

Je pense que "bye bye htmlcontent" est actuellement encore; –

-3

Votre requête ne va pas. Vous n'échappez pas à la chaîne. Vous devez le faire comme suit: Vous n'avez pas concaténé la variable à la chaîne.

mysqli_query($con,"DELETE FROM htmlcontent WHERE id='".$_POST[id]."'") 
+0

Vous * toujours * n'échappez pas à la chaîne. Utilisez des instructions préparées pour empêcher l'injection SQL. –

+0

Qu'en est-il de $ _POST ['id'] est égal à "'OR' 1 '=' 1"? –

+0

@vp_arth bye bye htmlcontent –