J'aimerais supprimer tous les utilisateurs non connectés depuis une date, mais ça ne marche pas :
Code : Tout sélectionner
DELETE FROM `users` WHERE `last_visit` < `2021-01-01 00:00:00`#1054 - Champ '2021-01-01 00:00:00' inconnu dans where clause
Code : Tout sélectionner
DELETE FROM `users` WHERE `last_visit` < `2021-01-01 00:00:00`Code : Tout sélectionner
$last_login = '2013-01-01'; // Pour test
$query = $db->prepare("DELETE FROM users WHERE last_visit < :last_login");
$query->bindValue(':last_login', $last_login, PDO::PARAM_STR);
if ($query->execute()) {
echo '<h2>Les membres inactifs ont été supprimés !</h2>';
}
Code : Tout sélectionner
$last_login = '2021-01-01'; // Pour test
$db->query("DELETE FROM users WHERE last_visit < $last_login");
// $db->query("DELETE FROM users WHERE last_visit < '$last_login'"); // Ne marche pas non plus
if ($query->execute()) {
$count = $query->rowCount(); // rowCount() retourne le nombre de lignes effacées dans la BDD
echo "<p>$count membre(s) inactif(s) depuis le $last_login supprimé(s) !</p>";
}
Notice: Undefined variable: query in ... on line 72
Fatal error: Uncaught Error: Call to a member function execute() on null in ... :72 Stack trace: #0 {main} thrown in ... on line 72
Code : Tout sélectionner
$query = $db->query("DELETE FROM users WHERE last_visit < '$last_login'");Code : Tout sélectionner
$count = $query->rowCount();
Du coup si tu ne fais pas d'execute() bah ça retourne 0...rowCount — Retourne le nombre de lignes affectées par le dernier appel à la fonction execute()
Code : Tout sélectionner
$query->execute();
$count = $query->rowCount(); // Obtient le nb de lignes effacées. Ca marche pour la requete préparée
Code : Tout sélectionner
$count = $query->rowCount(); // Obtient le nb de lignes effacées. Ca marche sans requete prepare
$query->execute();
// $count = $query->rowCount(); // Ne marche pas ici