Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP, Mysql kyselyn syntaksi

jammupatu [27.05.2003 12:22:03]

#

Hei!

Ensimmäinen posti. =) ... Olen aloitellut php:tä tässä parin viikon aikana. Nyt teen kyselymoottoria ja kompastuin heti php:n syntaksiin. Toivottavasti joku voisi auttaa!

Yritän ahtaa SQL-kyselyyn $_POST -muuttujaa seuraavalla (ja tuhannella muulla syntaksiyrityksellä) tavalla: (alla oleva EI siis toimi)

$sql3 = ("insert into vastaukset_table ($_POST['vastaus'.$i]) values ($_POST['vastaus'.$i]");

Sain tuon ensimmäisen $_post... toimimaan yhdessä vaiheessa, mutta nyt olen unohtanut senkin syntaksin. Jälkimmäistä en ole saanut mitenkään toimimaan. Ilmeisesti ongelma liittyy " ' ´ -merkkien oikein käyttämiseen. Olisi erittäin mukavaa jos joku jeesaisi!

Tällä hetkellä kierrätän toisen muuttujan kautta nuo $_POST ...-datat:

$vastaus = $_POST["vastaus$i"];

koko lause:

$sql3 = ("insert into vastaukset_table (vastaus{$i}) values ($vastaus)");

Jos itse koodi ja sen tarkoitus ei käy järkeen niin älkää ottako kantaa. =) Kysyn vain syntaksia. Haluaisin päästä irti tuosta $vastaus-muuttujasta. Itse koodinpätkä on tällä hetkellä for-lauseessa, joka ei toimi oikein. Se on sitten aivan oma ongelmansa. =)

Ystävällisesti,

-jammupatu

odys [27.05.2003 12:31:55]

#

$sql = "INSERT INTO palaute (nimi, palaute, email) VALUES('" . $_POST["nimi"] . "', '" . $_POST["palaute"] . "', '" . $_POST["email"] . "')";

Tuo on siis esimerkki miten se toimii

Tämä toimii myös:

$sql = "INSERT INTO palaute SET nimi = '" . $_POST["nimi"] . "', palaute = '" . $_POST["palaute"] . "', email = '" . $_POST["email"] . "'";

jammupatu [27.05.2003 12:49:58]

#

Suuret kiitokset!

Nyt lähti toimimaan.

=)

-Jammupatu

odys [27.05.2003 12:54:12]

#

Eipä kestä.. kyllä se siitä vielä lähtee

NiKC [27.05.2003 13:35:21]

#

Kannattaa (ehkä) myös tutustua sprintf-funktion toimintaan. sillä saa kirjotettua siistejä literaaleja ilman .-operaattoria.

esim. tuo yllä olevan voisi tehdä näin.

$sql3 = sprintf( "INSERT INTO palaute (nimi, palaute, email) VALUES ('%s', '%s', '%s')", $_POST['nimi'], $_POST['palaute'], $_POST['email'] );

tällä tavalla voi myös uusiokäyttää koodia melko helposti. kuvitellaan esim. että meillä on valmiiksi määriteltynä

$sqlinsert = "INSERT INTO a (b, c) VALUES (%s, %s)";

ja

$sqlupdate = "UPDATE a, SET b = %s, c = %s";

silloin voidaan tilanteesta riippuen asettaa kolmanteen muuttujaan $sql jompikumpi ja muodostaa täydellinen sql-lauseke sprintf($sql, $e, $f)-lauseella.

Näin muuttujia $e ja $f, sekä sql-lauseita voi käsitellä keskitetysti (=vain yhdessä paikassa) ja näin saavuttaa selkeämpää ja helpommin päivitettävää koodia.

edit:
sprintf() https://www.php.net/manual/en/function.sprintf.php

Vastaus

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

Tietoa sivustosta