Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tietokannan yhteysongelma

Sivun loppuun

iines [09.05.2013 14:15:52]

#

Hei!
Olen siirtänyt nettisivut uudelle palvelimelle. Nyt en saa niitä toimimaan ollenkaan, koska tietokantayhteys ei toimi.
Antaa tällaisen virheilmoituksen: Access denied for user 'tietokannan nimi'@'localhost' (using password: NO) eli pääsy on estetty käyttäjälle.
Ennen palvelinten vaihtoa sivut toimivat aivan oikein, joten olen yrittänyt hakea virhettä, mutta en löydä sitä.
Tällainen on tietokannan yhteyden muodostamisen koodi:

<?php
function OpenDB($address="hostname",$database="tietokannan nimi") // avaa tietokantayhteyden
{
$conn=mysql_connect($address,"käyttäjänimi","tietokannan salasana"); // määrittää käyttäjän ja salasanan
mysql_select_db($database);
return $conn;
}
$wwwpolku="images_prod/";
$polku = "usr/home2/hostname/d/käyttäjätunnus/images_prod/";
$pdf_tallenna="usr/home2/hostname/d/käyttäjätunnnus/tilaukset/";
function customer() // asettaa cookien, jolla hallitaan kaikkea mikä liittyy tilaamiseen
{
session_start(); // aloitetaan ja tallennetaan istunto cookieen
}

Tietokantayhteys on toiminut monta vuotta, mutta nyt eivät enää palvelimen muututtua. Voisiko joku auttaa asiassa, sillä sivut eivät ole eilisestä lähtien
enää toimineet.

Mod. lisäsi kooditagit!

Metabolix [09.05.2013 14:52:33]

#

Virheilmoituksen kohdasta "using password: NO" näkyy, että et anna lainkaan salasanaa, kun yhdistät tietokantaan. Jos tuossa OpenDB-funktiossasi kuitenkin on salasana, on selvää, että et käytä funktiota vaan tietokantayhteys syntyy jotain muuta kautta.

Yksi mahdollisuus on, että et ole koskaan käyttänytkään tuota funktiota ja koodisi on toiminut sattumalta: joillain palvelimilla tietokantayhteys avataan automaattisesti oletusasetuksilla, kun tietokantaa ensimmäisen kerran käytetään.

iines [09.05.2013 15:38:12]

#

Olen antanut salasanan funktiolle. En oikein usko, että koodi olisi toiminut
sattumalta, koska olen toisellakin nettisivustolla käyttänyt tietokannassa
samanlaista koodia, mikä on toiminut. Vai voiko olla mahdollista, että kahdella
nettisivustolla toimisi sattumalta tietokanta tällä tavalla?

Mikä sitten olisi tähän asiaan ratkaisu? Pitäisikö tuota tietokannan yhteyden
muodostamista sitten muuttaa kokonaan?

Metabolix [09.05.2013 15:48:24]

#

Tietokannan automaattinen yhdistäminen oli ennen hyvin yleinen tapa.

Voitko nyt selvittää, käytätkö OpenDB-funktiota ollenkaan koodissasi? Sitä pitää kutsua ennen ensimmäistäkään mysql_-alkuista riviä.

iines [09.05.2013 16:25:51]

#

"Voitko nyt selvittää, käytätkö OpenDB-funktiota ollenkaan koodissasi? Sitä pitää kutsua ennen ensimmäistäkään mysql_-alkuista riviä."

En nyt oikein ymmärrä mitä tuolla tarkoitat?

The Alchemist [09.05.2013 16:50:10]

#

Niin että OpenDB-funktiotasi pitää kutsua ennen kuin kutsut mitään mysql_-alkuista funktiota. Yksi yleinen virhe on huudella mysql_real_escape_stringiä ennen kuin on avannut tietokantayhteyden, jota em. funktio voisi käyttää.

iines [09.05.2013 17:06:02]

#

Niin olen mielestäni tehnyt. Ensimmäisenä olen käyttänyt tätä OpenDB- funktiota
ja vasta sen jälkeen mysql_connect-funktiota.
Aivan kuten tuossa ensimmäisessä viestissä ilmoitin. Eli pitäisikö tuo OpenDB- funktio muuttaa johonkin muuhun muotoon?

The Alchemist [09.05.2013 17:15:47]

#

Miksi olet tehnyt OpenDB-funktion, josset edes käytä sitä, vaan kuitenkin kutsut mysql_connectia jossain myöhemmin? Nythän myös tiedät, missä se vika on.

Metabolix [09.05.2013 17:16:16]

#

Viestissäsi et käytä OpenDB-funktiota. Lue tämä opas, ja palataan sitten asiaan.

iines [10.05.2013 10:03:13]

#

Sain nyt toimimaan sen tietokantayhteyden.
Kyllä se funktio oli ihan oikein, mutta siinä osoitteessa oleva hostname oli väärä
ja sitten olin unohtanut antaa käyttäjälle oikeudet tietokantaan.
Sen takia koko homma ei toiminut. Kiitokset kaikista vastauksista.


Sivun alkuun

Vastaus

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

Tietoa sivustosta