Keresés

Új hozzászólás Aktív témák

  • urandom0

    senior tag

    válasz lanszelot #21710 üzenetére

    1. Én ezeket a sorokat előre tenném, ugyanígy try..catch blokkba, csak egy másikba:

    //file create or open if exist
    $receptekData = new SQLite3("receptekdb.sqlite", SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE);
    //error handling
    $receptekData->enableExceptions(true);
    $receptekData->query(
    "CREATE TABLE IF NOT EXISTS 'receptek' (
    id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    nev VARCHAR(100) NOT NULL
    )"
    );

    Mert ezek ugye kapcsolódnak az adatbázishoz, beállítják a kivételkezelést, és elkészítik a táblát, igazából ezeknek szerintem logikailag nincs közük ahhoz, amit te a feltételben vizsgálsz. Az egy másik történet.
    Arról is nem is beszélve, hogy ha később szeretnél írni még egy INSERTET vagy bármit, akkor a $receptekData változódat, ami az SQLite kapcsolatot tárolja, nem fogod tudni elérni.

    2.
    isset($_POST["submitNev"])
    !empty($_POST["nev"])

    A két feltételt én egybekötném ÉS-sel.

    3. A lastInsertRowid-t én nem használnám. Egyetlen egyszer próbáltam használni PDO-nál MYSQL adatbázisnál (PDO::lastInsertId), akkor sem jött össze.
    De ha használod, akkor olvasd el ezen az oldalon az első néhány commentet, ott azt írják, hogy ha tranzakciókat használsz (te pedig azokat használsz), akkor a COMMIT elé kell tenni a lastInsertRowid-t. Tehát próbáld meg így:

    $receptekData->exec('BEGIN');
    $receptekData->query("INSERT INTO 'receptek' (nev) VALUES ('$nev')");
    $id = $receptekData->lastInsertRowid(); //ennek az értéke nulla, pedig nem annyi
    $receptekData->exec('COMMIT');

    "3.1.1 ott írják az sqlite oldalán a táblázatban."

    Az csak egy example, egy példa :)
    Az SQL és az SQLite saját SQL implementációja közti megfeleltetésekről.
    De ott is írják, hogy "Note that numeric arguments in parentheses that following the type name (ex: "VARCHAR(255)") are ignored by SQLite - SQLite does not impose any length restrictions (other than the large global SQLITE_MAX_LENGTH limit) on the length of strings, BLOBs or numeric values."

    ----------

    Ha túl hosszú a kódod, szedd szét logikailag különálló fájlokra.

Új hozzászólás Aktív témák

Hirdetés