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!
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.
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?
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ä.
"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?
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ää.
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?
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.
Viestissäsi et käytä OpenDB-funktiota. Lue tämä opas, ja palataan sitten asiaan.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.