Na een tijdje proberen toch maar een topic openen, want ik kom er echt niet meer aan uit...
Ik heb een functie die een waarde in een tabel moet wegschrijven:
Bovenstaande tabel heeft in mysql op de user_id en de settings_id foreign keys staan naar de respectievelijke user & settings tabel.
Het gekke (en rare) is dus, als ik de code 3 of 4 x na elkaar aanroep, met $preferenceKey en de $preference anders, hij maar 1 waarde daadwerkelijk opslaat, terwijl de functie elke keer true returnt.
Op één of andere manier voert hij de queries dus met succes uit (want geen PDO exception, geen error code of error info, execute returnt true, rowcount is 1), maar slaat hij ze uiteindelijk niet op
Als ik de query met $stmt->queryString(); dump en dan manueel de parameters vervang & uitvoer in phpmyadmin, werkt het uiteraard.
Heeft er iemand een idee waar het aan kan liggen? Er is geen transaction bezig, geen statement errors dus, query succesvol uitgevoerd, 1 rij ingevoegd, ...
Ik heb een functie die een waarde in een tabel moet wegschrijven:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| public function setPreferenceForUser(User $user, $preferenceKey, $preference) { $uid = $user->getId(); $preference = $preference ? 1 : 0; $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $this->pdo->prepare("INSERT INTO user_settings (user_id, settings_id, `value`) VALUES (:uid, (SELECT `id` FROM settings WHERE `key` = :key), :preference)"); $stmt->bindParam(":uid", $uid, PDO::PARAM_INT); $stmt->bindParam(":key", $preferenceKey, PDO::PARAM_STR); $stmt->bindParam(":preference", $preference, PDO::PARAM_INT); if($stmt->execute()){ return $stmt->rowCount() === 1; } return false; } |
Bovenstaande tabel heeft in mysql op de user_id en de settings_id foreign keys staan naar de respectievelijke user & settings tabel.
Het gekke (en rare) is dus, als ik de code 3 of 4 x na elkaar aanroep, met $preferenceKey en de $preference anders, hij maar 1 waarde daadwerkelijk opslaat, terwijl de functie elke keer true returnt.
Op één of andere manier voert hij de queries dus met succes uit (want geen PDO exception, geen error code of error info, execute returnt true, rowcount is 1), maar slaat hij ze uiteindelijk niet op
Als ik de query met $stmt->queryString(); dump en dan manueel de parameters vervang & uitvoer in phpmyadmin, werkt het uiteraard.
Heeft er iemand een idee waar het aan kan liggen? Er is geen transaction bezig, geen statement errors dus, query succesvol uitgevoerd, 1 rij ingevoegd, ...