Mulla on sellanen erikoinen ongelma että tietokantaan laittaminen välillä toimii ja välillä ei...syytä en keksi millään..Kuitenkin tälläsen error:in se antaa kun laittaminen epäonnistuu..
1064: You have an error in your SQL syntax.
Syntaksivirhe SQL-lauseessa. Pistä tuohon virhetulostuksen yhteyteen myös se yrittämäsi SQL-lause, jolloin virhe löytyypi.
Tossa sen on:
<?php $tietoja = mysql_query("Insert Into tilauskanta(Tilaustunnus,Matkatunnus,Matkakohde,Majoitus,Mkesto,Mlahto, Mpaluu,Asiakastunnus,Etunimi,Sukunimi,Osoite,Pnumero,Ppaikka,Sposti, Puhelin,Tunnus,Vahvistus,Ehdot,LMatkustajaA,LMatkustajaATunnus, LMatkustajaB,LMatkustajaBTunnus,LMatkustajaC,LMatkustajaCTunnus, Myhteensa,Tila)VALUES('$uusiarvo','$ida','$kohde','$majoitus', '$mkesto','$mlahto.','$mpaluu','$uusiarvoB','$enimi','$snimi', '$osoite','$numero','$paikka','$posti','$puhelin','$tunnus', '$vahvistan','$ehdotan','$lisaA','$lisaAtunnus','$lisaB', '$lisaBtunnus','$lisaC','$lisaCtunnus','$yhteensa','$tila')"); ?>
Kokeilin tässä omalta koneelta laittaa suoraan samalla sql-lauseella tiedot tietokantaan ja se meni läpi että heilahti. Mut ku kokeilin tolta ulkopuoliselta serveriltä niin homma vaan ei toiminu.
Mod. edit. kooditagit
Pistä toi tietokantakysely ensin muuttujaan ja tulosta se, niin näet sen kyselyn, mitä kantaan yritetään ajaa:
<?php $sql = "Insert Into tilauskanta(Tilaustunnus,Matkatunnus,Matkakohde,Majoitus,Mkesto,Mlahto, Mpaluu,Asiakastunnus,Etunimi,Sukunimi,Osoite,Pnumero,Ppaikka,Sposti, Puhelin,Tunnus,Vahvistus,Ehdot,LMatkustajaA,LMatkustajaATunnus, LMatkustajaB,LMatkustajaBTunnus,LMatkustajaC,LMatkustajaCTunnus, Myhteensa,Tila)VALUES('$uusiarvo','$ida','$kohde','$majoitus', '$mkesto','$mlahto.','$mpaluu','$uusiarvoB','$enimi','$snimi', '$osoite','$numero','$paikka','$posti','$puhelin','$tunnus', '$vahvistan','$ehdotan','$lisaA','$lisaAtunnus','$lisaB', '$lisaBtunnus','$lisaC','$lisaCtunnus','$yhteensa','$tila')"; $tietoja = mysql_query($sql) or die(mysql_error() . " SQL: " . $sql); ?>
Veikkauksia, miksi ei toimi:
- olettaen että tiedot tulevat lomakkeelta, niin palvelimella register_globals off, kotonasi päällä. Ratkaisu: käytä $_GET ja $_POST -taulukoita
- antamasi tiedot sisältävät SQL:n kannalta haitallisia merkkejä, esim. hipsuja. Ratkaisu: mysql_real_escape_string()
Se on paljon mahdollista että tiedot sisältävät haitallisia merkkejä koska ne on salattu Mcrypt_Rijdael_256 avulla....
Mut laiton noi salatut muuttujat vielä ton base64_encode() sisään niin johan rupes tietokantakin valittamasta.
Kannattaa noista muuttujista silti parsia ("escapettaa", mitenköhän tämänkin suomentaisi) haitalliset merkit pois kaiken varalta:
http://wiki.mureakuha.com/wiki/SQL-injektio
Oot ihan oikeassa. Laitoin kyllä sen kans saman tien tonne olion funktioksi jos sattuu käymään tietojen laittajalla virhe..
Aihe on jo aika vanha, joten et voi enää vastata siihen.