Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL kusahtaa

Sivun loppuun

Teme [19.10.2004 14:26:12]

#

$mysql = mysql_connect("xxxxx", "xxxxx", "xxxxx");
mysql_select_db("xxxxx");

if ($_POST['alue'] == "php") { $alue = "php"; }
else { $alue = "muut"; }

$pva = date("d.m.Y");
$aika = date("d:M");

$query = "INSERT INTO artikkelit(id, otsikko, teksti, by, pva, aika, alue, ip) VALUES ('', '" . $_POST['otsikko'] . "', '" . $_POST['teksti'] . "', '" . $_COOKIE['loginid'] . "', '$pva', '$aika', '$alue', '" . $_SERVER['REMOTE_ADDR'] . "')";
mysql_query($query);
mysql_close($mysql);

Olen antanut mm. seuraavia arvoja MySQL-kannalle:

» id - auto_increment
» kaikissa "not null"

Itse olen miettinyt ja testannut kaikkea reilun kahden tunnin ajan tuloksetta. Kertokaas joku mikä tossa mättää :)

Testasin myös, että lomake lähettää kaikki $_POST muuttujat scriptalle.

kasetti [19.10.2004 16:00:17]

#

kokeile vaikka ensin laittaa muuttujiin nuo jutut:

$alue = $_POST['alue'];
$pva = date("d.m.Y");
$aika = date("d:M");
$otsikko = $_POST['otsikko'];
$teksti = $_POST['teksti'];
$keksi = $_COOKIE['loginid'];
$ip = $_SERVER['REMOTE_ADDR'];

$query = "INSERT INTO artikkelit(otsikko, teksti, by, pva, aika, alue, ip)
VALUES('$otsikko', '$teksti', '$keksi', '$pva', '$aika', '$alue','$ip')";

jos tuo ei mene kantaan niin sitten varmaan jotain muuta mätää. Jos id on kannassa auto_increment niin sitä tietoa ei tarvi sinne erikseen laittaa.

niin ja testausvaiheessa kannattaa muistaa mysql_error();

makeuu [19.10.2004 16:02:29]

#

kasetti kirjoitti:

Jos id on kannassa auto_increment niin sitä tietoa ei tarvi sinne erikseen laittaa.

Mikä on auto_increment :)

Teme [19.10.2004 18:38:31]

#

auto_increment toimii ID-tyylisissä sarakkeissa. Tietoa lisättäessä MySQL tarkistaa tämänhetkisen suurimman arvon, korottaa sitä yhdellä ja asettaa sen lisättävään riviin. Tällöin ei joka kerta tarvitse itse hakea suurinta arvoa ja korottaa sitä yhdellä. Suuri helpotus toi auto_increment :)

Olga [19.10.2004 19:01:51]

#

Kannattaa käyttää mysql_error() - funktiota queryn perässä, jolloin mahdolliset virheet on helpompi saada selville. En nyt ihan tältä istumalta huomaa mitään mullistavaa, mut voi olla että taulun nimen jälkeen tulee laittaa välilyönti. Mut sehän selviää varmaanki sit ku mahdolliset virheilmoitukset näkyy.

Teme [19.10.2004 23:14:34]

#

Oon testannu kaikkea eikä toimi siltikään :(

Wizard [19.10.2004 23:21:16]

#

Yksi mikä pistää silmään on se, että jos sinulla on ID kentässä auto_increment, niin jätä se pois silloin insert & values osioista. Siihen EI TARVITSE antaa mitään, ei edes tyhjää. Monesti se aiheuttaa myös virheen. Voisiko MySQL olla nyt sitten sellainen, että kun yrität syöttää null arvoa ID kenttään, niin virhe johtuu siitä?

Sitten tulee mieleen myös se, että olet määritellyt jollekin kentälle väärän tyypin eli yrität syöttää tekstiä numeraalisiin kenttiin tms.


Eikö muuten tuo

$aika = date("d:M"); pitäisi olla => $aika = date("h:i:s", time()); ???

Itse käyttäisin kyllä ehkä unix aikaa jos kaikki ajat olisivat unix ajan 0 jälkeisiä...

ajv [20.10.2004 02:07:14]

#

Teme kirjoitti:

» kaikissa "not null"

Hieman haiskahtaisi siltä, että et täytä kaikkia kenttiä. Riippuen myslin asetuksista jonkun 'not null'-kentän tyhjäksi jättäminen saattaa estää tiedon lisäämisen.

echota query sivulle ja pastee se esim. phpmyadminiin ja siellä kikkailet kyselyn kuntoon.


Sivun alkuun

Vastaus

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

Tietoa sivustosta