Bonjour,

Comment inverser un type tinyint(1) ?
MySql blocked = tinyint(1)

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$this->sql = $this->db->prepare("UPDATE `users` SET `blocked` = NOT `blocked` WHERE username = ?");
$this->sql->bind_param('s', $username);
$this->sql->execute();

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$this->sql = $this->db->prepare("UPDATE `users` SET `blocked` = IF(`blocked` = 0, 1, 0) WHERE username = ?");
$this->sql->bind_param('s', $username);
$this->sql->execute();

En vain cela ne fonctionne pas.

Alors la solution que j'ai trouvé c’est de récupérè la valeur de `blocked` puis ajouter une condition en fonction de sa valeur :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
if ($row['blocked'] == 1) {
     $this->sql = $this->db->prepare("UPDATE `users` SET `blocked` = 0 WHERE username = ?");
}
 
 if ($row['blocked'] == 0) {
      $this->sql = $this->db->prepare("UPDATE `users` SET `blocked` = 1 WHERE username = ?");
}
 
$this->sql->bind_param('s', $username);
$this->sql->execute();

Je ne comprend pas pourquoi le `blocked` = NOT `blocked` ne fonctionne pas (NOT 0 = 1 , NOT 1 = 0).

Merci