Tässä olen väsännyt erään laista ohjelmaa php:llä. Tuli vastaan ongelma, php ei suostu tekemään muutoksia tietokantaan. Koodirivit:
mysql_query ("CREATE TABLE aiheet ( nimi TEXT, id INT, maara INT, kirjoittaja TEXT ); CREATE TABLE users ( nimi TEXT, passu TEXT, arvo INT ); "); ##Ei luonut taulua, joten tein käsin#### $query = "SELECT * FROM aiheet ORDER BY id"; $result = @mysql_query($query); $id = mysql_numrows($result) + 1; mysql_query ('INSERT INTO aiheet(nimi, id, maara, kirjoittaja, aika) VALUES (' . $_POST["aihe"] . ',' . $id .', "1",' . $_POST["nick"]. ', '. time() .'); '); ##Ei tee mitään merkintää tietokantaan####
Käytössä php4 ja MySql 5.x ja Apache2
Itse silti epäilen vahvasti, jotain yksin kertaista kirjoitus virhettä, jota en löydä.
Minkään näköistä virhe ilmoitusta ei tule.
Olethan ottanut yhteyden ja valinnut tietokannan ennen kyselyn suorittamista? Tuo myös näyttää yritykseltä tehdä sitä, minkä AUTO_INCREMENT-kenttä tekee automaattisesti. @-merkki mysql_queryn edessä estää virheilmoituksien tulostuksen, joten se kannattaa ottaa pois varsinkin debuggausvaiheessa. Muutenkin koodi olisi hyvä saada sille mallille ettei moisia kommervenkkejä tarvitsisi edes käyttää. Mysql_query-funktion perään voit myös laittaa ' or die("Virhe: " . mysql_error());', jolloin saat infoa missä mahdollisesti mättää. Lisäksi tekstimuotoinen tieto pitää ympäröidä hipsuilla kun taas numeerista ei tarvitse.
Toivottavasti tästä on apua.
(käytän tätä itse tulosten tallentamiseen)
<?php //yhteys ulkoiselle palvelimelle $yhteys = mysql_connect("localhost", "tunnus", "passu") or die(mysql_error()); //valitaan tietokanta "testi" mysql_select_db("testi", $yhteys); //valitaan tietokanta "testi".... mysql_select_db("testi", $yhteys) or die("Tietokantaa ei löytynyt!"); //tähän tulevat tietokantakyselyt! //haetaan kaikki tietueet $kysely = "SELECT * FROM taulu"; //suoritetaan kysely $haku = mysql_query($kysely, $yhteys); //lisätään tiedot $sql = "INSERT INTO taulu (tieto1, tieto2, tieto3) VALUES ('".$_POST['tieto1']."','".$_POST['tieto2']."','".$_POST['tieto3']."')"; mysql_query($sql) or die(mysql_error()." SQL: ".$sql); //exittii echo "Tiedot tallennettu onnistuneesti"; mysql_close($yhteys); ?>
Noniin, kiitos or die
$query = "SELECT * FROM aiheet ORDER BY id"; $result = mysql_query($query) or die ("Määrä epäonnistui"); $id = mysql_numrows($result) + 1; $uus_aihe = 'INSERT INTO aiheet(nimi, id, maara, kirjoittaja, aika) VALUES ("' . $_POST["aihe"] . '",' . $id .', 1,"' . $_POST["nick"]. '", "'. time() .'"); '; mysql_query ($uus_aihe) or die ("Virhe: ". mysql_error());
Se että mitään muutoksia ei tullut johtui siitä, että noista $_POST muuttujista tulleet syötteet eivät olleet lainausmerkeissä ""
Kiitos,
tämä oli ensimmäinen itse tekemäni sql ohjelma.
Aihe on jo aika vanha, joten et voi enää vastata siihen.