Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL-lause tekee vain tyhjiä rivejä

Hoover [29.11.2006 09:07:44]

#

Mikähän mahtaa tässä lauseessa olla vikana, kun tietokantaan tulee vain tyhjiä rivejä ajettaessa. Id-numero vain kasvaa, mutta muuten tulee tyhjää. :o

login ja passu tulee lomakkeesta:

$login = $_POST['login'];
$pass = $_POST['pass'];

$query = "INSERT INTO kayttaja (login, pass) VALUES ('$login', '$pass')";
mysql_query($query) or die('Error, insert query failed');

Tietokannan kayttaja-taulu:

CREATE TABLE kayttaja(id INT(10) NOT NULL AUTO_INCREMENT, login VARCHAR(10) NOT NULL, pass VARCHAR(10) NOT NULL, primary key(id));

Antti Laaksonen [29.11.2006 09:09:47]

#

Mikä on muuttujan $query arvo ennen kyselyn suoritusta?

Hoover [29.11.2006 09:27:39]

#

$query = "INSERT INTO kayttaja (login, pass) VALUES ('$login', '$pass')";

Ennen tuota määritystä se ei ole mitään. Tuossa vasta määrittelen koko muuttujan.

Löysin muuten vian nyt. Ilmeisesti tuo lause on ok, mutta jostain syystä php-tiedoston muuttujien määrittelyrivit skipataan kokonaan, eli se vie tyhjiä muuttujia tauluun.

Onko tässä php:ssä jotenkin eksoottisempi ajojärjestys kuin muissa kielissä (c#, vb.net...)? Minulla on heti tiedoston alussa viittaukset php-tiedostoihin joissa konfiguroin tietokannan osoitteen, tunnukset yms. ja sitten tulee muuttujien määrittelyt. Tämän jälkeen on kutsuja funktioihin.

Tässä on pelkistetty esimerkki vielä tuosta php-tiedostosta:

<?php
include 'config.php';	// Määritetään MySQL-yhteyden asetukset
include 'opendb.php';	//Avataan MySQL-yhteys

// Hirveesti muuttujien määrittelyjä....
$login = $_POST['login'];
$pass = $_POST['pass'];
// ... lisää täällä

Funktio1();
Funktio2();

Funktio1()
{
    // Jotain...
}

Funktio2()
{
    // Jotain lisää...
}

include 'closedb.php';	// Suljetaan MySQL-yhteys

?>

Muokkaus:

Ahaa.. Löytyi taas vika. :)

Nämä minun muuttujat on esitelty funktioiden ulkopuolella, jossa lisään ne tauluun, eli ne ovat viittausalueen ulkopuolella. Tottunut C#:ssa ja VB:ssä, että kun lätkii muuttujia funktioiden ulkopuolella, niin niistä tulee globaaleja.

Muokkaus nro. 2:

Mitenkä php:ssä olisi sitten järkevä ratkaista tuo ongelma, kun useammassa funktiossa haluaisin samaan arvoon viitata?

Kannattaako tylysti vaan molemmissa funktioissa hakea _$POST-taulusta arvot vai mikä olisi fiksu tapa?

Blaze [29.11.2006 12:00:31]

#

$GLOBALS['hassu'] = 'Taa nakyy kaikkialle!';

Hoover [29.11.2006 12:48:58]

#

Roger. Kiitti.

Olga [29.11.2006 13:14:30]

#

Tai varmaan fiksumpaa olisi antaa arvo funktioille parametrina, tai vaikka koota koko roska luokaksi, jolloin luokan muuttujat ovat automaattisesti sen metodien käytössä.

Vastaus

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

Tietoa sivustosta