Moikka!
Yritin ajaa esimerkkikkoodia:
<?php //muodostetaan yhteys tietokantapalvelimeen $yhteys = mysql_connect() or die("Yhdistäminen ei onnistunut!"); //valitaan tietokanta "testi" mysql_select_db("testi", $yhteys) or die("Tietokantaa ei löytynyt!"); //tähän tulevat tietokantakyselyt! //suljetaan yhteys mysql_close($yhteys); ?>
mutta tulee virheilmoitus: "Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\PHP\Ohjelmointiputkan testit\Yhteyden muodostaminen.php:9 Stack trace: #0 {main} thrown in C:\xampp\htdocs\".
Miten saan virheen korjattu ja muodostaa yhteyten palvelimeen?
Saatko toimimaan PDO:n kautta, joka on nykyaikaisempi tapa käsitellä php:lla tietokantoja ?
https://www.ohjelmointiputka.net/oppaat/opas.
https://www.ohjelmointiputka.net/oppaat/opas.
Edit - Tosiaan toi Antin tekemä Osa 8 on hivenen vanhentunut, ja onhan sillä ikääkin...
Edit - Mikäli haluat varmasti tehdä tuolla vanhahtavalla tavalla, niin se menneen jotenkin näin...
<?php //muodostetaan yhteys tietokantapalvelimeen //En jaksa säätää tämän kautta... $yhteys = mysql_connect() or die("Yhdistäminen ei onnistunut!"); $yhteys = mysql_connect("localhost", "käyttäjä", "salasana") or die("Yhdistäminen ei onnistunut!");; //valitaan tietokanta "testi" mysql_select_db("testi", $yhteys) or die("Tietokantaa ei löytynyt!"); //tähän tulevat tietokantakyselyt! //suljetaan yhteys mysql_close($yhteys); ?>
Kiitos ehdotuksesta, PDO:ta katson myöhemmin.
Valitettavasti ehdottamasi koodiversio heittää samanlaisen virheilmoituksen, kuin edessä oli mainittu. Haluaisin kuitenkin tietää, mihin tämä virheilmoitus viittaa, kun olen tässä opettelemassa PHP:ta. Niin tiedän jatkossa virheen aiheuttajaa. Joku määrittelu mättää?
Voisiko joku testata omalla koneella sitä koodipätkää ja tutkia asiaa?
Miten koodi pitää korjata, jotta se toimisi?
Olethan muuttanut "käyttäjä" omasi MySQL-käyttäjäkseksi ja "salasana":n kyseisen MySQL-käyttäjän salasanaksi ?
Mikäli et, niin helpoiten se onnistuu phpmyadmin:n avulla.
Siis asentamalla phpmyadmin.
phpadminin asentaminen vaihtelee eri alustojen mukaan, joten tässä ei sitä kannata ryhtyä opettamaan.
Hakusanat LAMP (linux-ympäristö)
ja WAMP (Windows-ympäristö) auttaneen tämän ympäristön tekemisessä.
Edit -
Googlaamalla erroria löytyi, ettei kyseiset funktiot ole enää voimassa php 7:ssä.
https://stackoverflow.com/questions/34579099/
Joten joudut tekemään sen PDO:n kautta.
Kiitti linkistä.
Tuli ilmi, että mysql_connect()-funktion sijasta pitää käyttää mysqli_connect()-funktiota. Lisäämällä i kirjaimen funktioniin pääsee yläpuolella ilmennyt virheestä, mutta tilalle tuli toinen.
Käyttämällä koodia:
<?php //muodostetaan yhteys tietokantapalvelimeen $yhteys = mysql_connect() or die("Yhdistäminen ei onnistunut!"); //valitaan tietokanta "testi" mysql_select_db("testi", $yhteys) or die("Tietokantaa ei löytynyt!"); //tähän tulevat tietokantakyselyt! //suljetaan yhteys mysql_close($yhteys); ?>
tulee virheilmoitus:
"Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\xampp\htdocs\..."
ja käyttämällä koodia:
<?php //muodostetaan yhteys tietokantapalvelimeen $yhteys = mysqli_connect("localhost", "käyttäjä", "salasana") or die("Yhdistäminen ei onnistunut!"); //valitaan tietokanta "testi" mysqli_select_db("testi", $yhteys) or die("Tietokantaa ei löytynyt!"); //tähän tulevat tietokantakyselyt! //suljetaan yhteys mysqli_close($yhteys); ?>
tulee virheilmoitus: "Warning: mysqli_connect(): (HY000/1045): Access denied for user 'käyttäjä'@'localhost' (using password: YES) in C:\xampp\htdocs\..."
Saisinko niille kahdelle erilaiselle varoitukselle selityksen? Mitä pitää muuttaa, jotta varoituksista pääse eroon?
Sulla pitää olla MySQL:ssä käyttäjä, ja sille salasana.
Tässä tapauksessa käyttäjä on "käyttäjä" ja kyseisen käyttäjän salasana on "salasana".
MySQL:llään pitää vielä luoda tietokanta nimeltä "testi", ja antaa käyttäjälle oikeudet käyttää kyseistä kantaa.
Helpoiten kyseiset oikeudet voi tehdä phpmyadmin:lla, jonka esitin jo aikaisemmin.
Alkuperäisessä virheessä ”Call to undefined function mysql_connect()” selvästi lukee, että funktiota mysql_connect ei ole olemassa. Tämä johtuu siitä, että kyseinen funktio ja koko vanha mysql-funktioiden sarja on poistettu PHP:stä. Vuoden 2003 ”Käytännön PHP-opas” onkin hyvästä syystä siirretty vanhentuneiden oppaiden arkistoon, joten älä lue sitä! Ajantasaisia oppaita löydät opassivulta.
MySQLi-funktiot ovat aivan eri kokonaisuus, joten et voi korjata vanhoja koodeja vain lisäilemällä i-kirjaimia funktioiden nimiin.
Lue uudempaa opasta ja käytä PDO:ta.
Yleensä tarvitset silti käyttäjätunnuksen ja salasanan tietokantayhteyttä varten, joten omalla palvelimella sinun pitää itse luoda tunnukset ja webhotellissa olet ehkä saanut valmiit tunnukset. Ohjasiko XAMPP ehkä jo asennusvaiheessa luomaan MySQL-tunnukset?
Kiitoksia neuvoista.
Asensin nyt koneelleni phpMyAdmin:n version phpMyAdmin-4.7.9-all-languages. Mutta miten pääsen alkuun? En tiedä, mistä voisin avata phpMyAdminin, että pääsen määrittelemään MySQL:n "käyttäjä" ja "salasana" omalle palvelimelle.
En huomannut, että XAMPP olisi ehdottanut asennusvaiheessa luomaan MySQL-tunnuksia tai mahdollisesti ohitin MySQL_tunnusten luomisen, koska oletin, että teen sen myöhemmin.
Pitäisi löytyä seuraavasta osoitteesta, mikäli on normaalisti asennettu:
http://127.0.0.1/phpmyadmin/
Toki sijainti voi olla jokin muukin.
Onko niin, että kun käytän PDO:ta MySQL:n sijasta en tarvitse phpMyAdmin:a, koska phpMyAdmin on tarkoitettu ainoastaan MySQL:n hallintaan?
PDO ei ole tietokanta, vaan abstrakti luokka tietokantojen käyttöön (korvaa mysql_xxx()-funktiot). PDO:ta käytettäessä ei tarvitse sitoa koodia tiettyyn tietokantaan, vaan sama luokka toimii monille tietokannoille.
Tarvitset PDO:n kanssa edelleen esim. MySQL-tietokannan ja sen hallinoimiseen esim. phpMyAdminin.
Kiitoksia kaikille vastauksista. Isompi kuva koodauksesta alkaa selkiintymään.
Aihe on jo aika vanha, joten et voi enää vastata siihen.