Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: PDO: id:n selvitys

Triton [05.01.2010 13:46:43]

#

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.

Antti Laaksonen [05.01.2010 13:51:14]

#

Saat selville viimeksi lisätyn rivin id:n PDO-luokan metodilla lastInsertId.

Triton [05.01.2010 14:23:34]

#

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ä.

Antti Laaksonen [05.01.2010 18:06:28]

#

Ovathan taulut InnoDB-tyyppisiä eivätkä MyISAM-tyyppisiä?

Triton [05.01.2010 18:36:47]

#

Eipähän ne tietenkään ole... Olis pitäny varmaa lukee kunnolla noi oppaat xD. Kiitos vastauksesta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta