PHP:llä olen tekemässä erästä sovellusta ja nyt tuli sellainen ongelma vastaan eli:
Olen tekemässä transaktiota, jossa ensin tallennan tauluun1 tietueen ja sen jälkeen tauluun2 pitäisi tallentaa taulun1 id. Millä tavalla saisin fiksusti selville taulun1 id:n? ID:t on luotu auto_incrementillä... Käytän siis PDO:ta tietokantayhteyksiin.
Saat selville viimeksi lisätyn rivin id:n PDO-luokan metodilla lastInsertId.
Niinpä tietenkin ei vaan osunu silmään, kun selaisin php.netistä. Kiitos tästä!
Edit. Jostain syystä kun suoritin transaktion, niin rollBack-metodi ei kumonnut toiseen tauluun tehtyjä muutoksia, vaikka toisen kohdalla tapahtui virhe.
<?php
try {
$db->beginTransaction();
$sql = "INSERT INTO pages SET pname = ?";
$query = $db->prepare($sql);
$query->execute(array($_POST['pname']));
$sql = "INSERT INTO contents (pid, eid, title, content) VALUES (?,?,?,?)";
$query = $db->prepare($sql);
$query->execute(array($db->lastInsertId(), $_POST['eid'], $_POST['title'], $_POST['content']));
$db->commit();
} catch (Exception $e) {
$db->rollBack();
echo "Virhe: " . $e->getMessage();
}Huom. tässä koodissa ei ole enää virhettä tahallaan tekemääni virhettä.
Ovathan taulut InnoDB-tyyppisiä eivätkä MyISAM-tyyppisiä?
Eipähän ne tietenkään ole... Olis pitäny varmaa lukee kunnolla noi oppaat xD. Kiitos vastauksesta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.