Siemka, mam problem z tą metodą.
public function changeBlockStatus(int $id)
{
try {
$query = '
UPDATE users
SET isBanned = :block
WHERE userId = : userId;';
$this->dbh->query($query);
$userData = $this->get($id);
$isBanned = $userData['isBanned'];
$this->dbh->bind(':block', !$isBanned);
$this->dbh->bind(':userId', $id);
$this->dbh->execute();
return $this->dbh->getRowsAffected();
} catch (Throwable $e) {
throw new DataModificationException('Modyfikajca danych nie powiodła się.', 400, $e);
}
}
Wyrzuca mi errora, chociaż z tego co widzę to wszystko binduje dobrze.
"SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens"
Tutaj rzucę jeszcze dla pewności jak wygląda moja metoda do bindowania
public function bind(
string $param,
$value,
string $type = null
): void {
if (is_null($type)) {
switch (true) {
case is_int($value):
$type = PDO::PARAM_INT;
break;
case is_bool($value):
$type = PDO::PARAM_BOOL;
break;
case is_null($value):
$type = PDO::PARAM_NULL;
break;
case is_string($value):
default:
$type = PDO::PARAM_STR;
break;
}
$this->stmt->bindParam(
$param,
$value,
$type
);
}
}
A co do danych które chcę zbindować to do isBanned chcę przypisać wartość logiczną z resztą tak samo jest określone to w bazie.