Problem z updatem do sesji

0

Witam, mam problem ze zrobieniem update'a do sesji. Robię projekt na zaliczenie przedmiotu na studia, domyślam się co jest źle tylko nie mam pojęcia jak to naprawić. Taki błąd otrzymuje:
Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY' in C:\xampp\htdocs\sklep\sessions.php:103 Stack trace: #0 C:\xampp\htdocs\sklep\sessions.php(103): PDOStatement->execute() #1 C:\xampp\htdocs\sklep\doLogin.php(9): session->updateSession(Object(user)) #2 {main} thrown in C:\xampp\htdocs\sklep\sessions.php on line 103.
Session id, jest tworzone poprzez losowy ciąg znaków, a w pewnym momencie zmienia swoja wartość przez, co w bazie wystepuje duplikacja. Zdjęcie z bazy w załączniku.

        global $pdo, $request;
        
        $newId = random_session_id();
        $newSalt = random_salt(10);
        setcookie(SESSION_COOKIE, $newId, time() + SESSION_COOKIE_EXPIRE);
        
        $stmt = $pdo->prepare("UPDATE sessions SET salt_token = :salt, updated_at = :time, session_id = :newId, user_id = :uid 
        WHERE session_id = :sid");

        $stmt->bindValue(':salt', $newSalt, PDO::PARAM_STR);
        $stmt->bindValue(':time', time(), PDO::PARAM_INT);
        $stmt->bindValue(':newId', $newId, PDO::PARAM_INT);
        $stmt->bindValue(':uid', $user->getId(), PDO::PARAM_INT);
        $stmt->bindValue(':sid', $this->id, PDO::PARAM_STR);
        $stmt->execute();
        
        $this->id = $newId;
        $this->user = $user;
}```php
A tak tworze session_id :
```function random_session_id(){
    $utime = time();
    $id = random_salt(40-strlen($utime)).$utime;
    return $id;
}


function random_salt($len){
    return random_text($len);
}

function random_text($len){
    $base = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890';
    $max = strlen($base)-1;
    $rstring = '';
    mt_srand((double)microtime()*1000000);
    while(strlen($rstring) < $len)
    $rstring.=$base[mt_rand(0,$max)];
    return $rstring;
}```php

Z góry dziękuje za pomoc.
1
$stmt->bindValue(':newId', $newId, PDO::PARAM_STR);
0
Patryk27 napisał(a):
$stmt->bindValue(':newId', $newId, PDO::PARAM_STR);

Dziękuje bardzo, 3 dni siedziałem i szukałem co jest źle, żałuje że wcześniej nie napisałem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1