Hei,
PDO antaa hyvät eväät olioiden hakemiselle MySQL-tietokannasta, esim. alla olevalla tavalla.
$sql = $db -> conn_id -> prepare("SELECT ID, OY FROM `taulukko` WHERE ref = ?"); $sql -> bindParam(1, "juttu" ); $sql -> setFetchMode(PDO::FETCH_INTO, new olio); $sql -> execute();
Sama systeemi täyttää vaikka millaisen taulukon olioista, joissa on nuo 'ID' ja 'OY'. Helpolla ja yksinkertaiasesti.
Kysymys, arvon raati, on että miten syötän (tai muutan) dataa yhtä kätevästi MySQL-tietokantaan? Onko olemassa muuta, järkevämpää tapaa kuin joka paikassa esille tullut
$sql = $db->prepare('INSERT INTO twocents (path, name, message) VALUES (?, ?, ?)'); $sql->execute(array($path, $name, $message));
(esim. StackOverFlowsta)? Kyllähän se tälläkin menee, mutta laiskana ajattelin, että saisiko koko ison olion pukattua kerralla ilman että eksplisiittisesti sanon "path", "name", "message", ... ja niiden arvot --- käskisin vain pistää tuon olion, joka sisältää tuon saman datan tietokannan uudeksi riviksi?
Kiittää,
MoL
No eihän sun tarvitse sijoittaa tietoja välttämättä muuttujaan, jos ne tulee vaikka lomakkeelta.
$sql->execute(array($_POST["path"], $_POST["name"], $_POST["message"]));
Jos kyse oli siitä miten voi mahdollisimman lyhyesti (laiskasti) tallettaa arvot, niin eihän niitä kenttien nimiä ole pakko kirjoittaa. Voi laittaa vaan pelkät tietokantaan menevät arvot, mutta silloin ne täytyy olla oikeassa järjestyksessä alusta alkaen, ja niitä olla oikea määrä, jne...
Joten sen järkevyyden voi sitten jokainen itse miettiä.
$values = array($path, $name, $message); $sql = $db->prepare('INSERT INTO twocents VALUES (?, ?, ?)'); $sql->execute($values);
mol kirjoitti:
-- laiskana ajattelin, että saisiko koko ison olion pukattua kerralla ilman että eksplisiittisesti sanon "path", "name", "message", ... ja niiden arvot --- käskisin vain pistää tuon olion, joka sisältää tuon saman datan tietokannan uudeksi riviksi?
Kirjoitat toki itse ko. funktion. Eihän joka paikassa tarvittavaa koodia edes pidä duplikoida, se on yksinkertaisesti väärin ja huonoa ohjelmointia. Teet yhden funktion, jota voit kutsua aina kyseistä operaatiota tarvitsessasi.
En suosittelisi pukkaamaan oliota suoraan kannan kenttä-arvo pareiksi, varsinkaan jos mikään syöte tulee ulkopuolisesta lähteestä. Helpottaa ongelmien ratkaisua kun näät suoraan koodista, mihin kenttiin tietokannassa menee dataa. Jos joskus muutat huomaamattasi oliota niin kantarakenne on äkkiä rikki.
tsuriga kirjoitti:
En suosittelisi pukkaamaan oliota suoraan kannan kenttä-arvo pareiksi, . . . Helpottaa ongelmien ratkaisua kun näät suoraan koodista, mihin kenttiin tietokannassa menee dataa.
Kiitos ja kumarrus kaikille kommenteista. Erityisesti yllä mainitulle hyvästä pointista, mutta toki kaikille muille. Lomakkeeltahan ne tiedot tulevat, Macron, pointin avulla tulevat. Makumakun esittämä kooodin lyhennystapa tuntuu nettiselailun perusteella olevan varsin suosittu, mutta koodin varmennuksen vuoksi se luultavammin ole hyvä tapa. Kiitos.
Väistyn takavasemmalle koodaamaan kuten neuvoitte.
MoL.
Aihe on jo aika vanha, joten et voi enää vastata siihen.