MySQL
NA VRH
DOMOV HTML CSS JavaScript jQuery PHP MySQL Python C# Sass WordPress
glave/headings

MySQL Povezava na strežnik Ustvarjanje tabele Vpisovanje podatka Vpisovanje podatkov Izpis zadnje zaporedne številke Database Branje tabele Pripravljene izjave in vezani parametri Izbira podatkov config.php WHERE ORDER BY Izbris podatkov Posodabljanje podatkov Omejitev izbire podatkov

MySQL

MySQL baza podatkov je najbolj priljubljen sistem baz podatkov, ki se uporablja skupaj s PHP. MySQL je odprto-kodni sistem za upravljanje relacijskih baz podatkov (RDBMS). Tako kot druge relacijske baze podatkov tudi MySQL uporablja osnovne tabele, omejitve, sprožilce, vloge, shranjene postopke in poglede kot glavne komponente, s katerimi delamo. Tabela je sestavljena iz vrstic, in vsaka vrstica vsebuje podatke za vsak stolpec. MySQL uporablja primarne ključe za enolično identifikacijo vsake vrstice (zapis) v tabeli, in tipk za zagotovitev referenčne celovitosti med dvema povezanima tabelama.

MySQL

Kaj sploh MySQL je?


Na začetku se najprej odpravimo v cPanel, kjer si izdelamo uporabnika in bazo podatkov, vse to naredimo v MySQL Databases. Lahko se to vse naredi preko PHP-ja samo meni ne deluje, tako da sem to storil kar v cPanel-u.

Preden se sploh česa lotimo, si moramo namestiti vse gonilnike. Za mene obstajata dve možnosti, težja in lažja. Težja je, da gremo na PHP uradno stran, in si naložimo gonilnike, kar je super samo za PHP, deluje zelo dobro, ampak mi potrebujemo še MySQL. Ker se vedno zapletem pri nalaganju oziroma pri nastavljanju, na koncu vedno naložim XAMPP, in mi vse deluje brez težav, tako da si pred začetkom naložimo program. Napisal sem celo kratka navodila za XAMPP namestitev.

Naslednja stvar, ki jo storimo, je da preverimo, če celotna povezava deluje kot je potrebno. In si napišemo skript za preverjanje povezave, ki je napisan v spodnjih vrsticah.

Povezava uspešna

    <?php
    $host = "če uporabljate lokalno vpišite "localhost", če se povezujete na strežnik, vpišite IP (najdemo ga v cPanel pod Remote MySQL);
    $uporabnik = "v cPanel uporabniško ime (če ga ne vemo) najdemo pod MySQL Databases";
    $geslo = "vpišemo geslo za dostop do naše baze";
    $database = "vpišemo ime naše podatkovne zbirke (ni obvezno)"; - če uporabimo database pri vpisu, moramo uporabiti tudi pri povezovanju v 7 vrstici

    // vzpostavi povezavo
    $povezava = mysqli_connect($host, $uporabnik, $geslo, $database);

    // preveri povezavo
    if (!$povezava) {
        die("Povezava ni uspela: " . mysqli_connect_error());
    }
    echo "Povezava uspešna";
    ?>
            

Povezava se prekine samodejno, ko se skript konča, če želimo prej zapreti povezavo uporabimo:

    mysqli_close($conn);
    

Če pride do kakšne težave kot je Fatal error: Call to undefined function mysql_query() verjetno pomeni, da nimate nameščenega ali nastavljenega MySQL-a.

Baza podatkov je sestavljena iz ene ali več tabel. Za ustvarjenja tabel potrebujemo posebne CREATE privilegije. V naslednjem primeru bomo ustvarili tabelo, z uporabo MySQLi.

Tabela je narejena!

    <?php
    $host = "ip strežnika";
    $uporabnik = "uporabniško ime";
    $geslo = "geslo";
    $database = "ime baze podatkov (ang. Database)";

    // vzpostavi povezavo
    $conn = mysqli_connect($host, $uporabnik, $geslo, $database);

    // preveri povezavo
    if (!$conn) {
        die("Povezava ni uspela: " . mysqli_connect_error());
    }

    // izdelava tabele
    $sql = "CREATE TABLE mojaTabela (
        id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        firstname VARCHAR(30) NOT NULL,
        lastname VARCHAR(30) NOT NULL,
        email VARCHAR(50),
        reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
        )";

    if (mysqli_query($conn, $sql)) {
        echo "Tabela je narejena!";
    }   else {
        echo "Žal nisi uspel izdelati tabele! " . mysqli_connect_error($conn);
    }

    mysqli_close($conn);
    ?>
            

Z uporabo MySQLi bomo v obstoječo tabelo (ki smo jo izdelali), sedaj vstavili še podatke. Sedaj namesto CREATE uporabimo INSERT.

OPOMBA: PHPStorm bo po vsej verjetnosti javil napako, ampak jo lahko ignoriramo, ker vse deluje pravilno, in je tudi pravilno napisana koda.

Pravilno si zapisal nov podatek

    <?php
    $host = "ip strežnika";
    $uporabnik = "uporabniško ime";
    $geslo = "geslo";
    $database = "ime baze podatkov (ang. Database)";

    // vzpostavi povezavo
    $povezava = mysqli_connect($host, $uporabnik, $geslo, $database);

    // preveri povezavo
    if (!$povezava) {
        die("Povezava ni uspela: " . mysqli_connect_error());
    }

    $sql = "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
    VALUES ('1', 'Borut', 'Bukovnik', 48, 'gorenjska')";

    if ($povezava->query($sql) === TRUE) {
        echo "Pravilno si zapisal nov podatek";
    }   else {
        echo "Napaka: " .$sql . "<br>" . $povezava->error;
    }

    mysqli_close($povezava)
    ?>
            

Podatek, ki sem ga vpisal v tabelo:

Vpisovanje podatka

Vpisali bomo več podatkov naenkrat v MySQL. S funkcijo mysqli-multi-query() je treba izvesti več SQL stavkov. V primeru bomo dodali 12 imen v SQL tabelo.

Pravilno si zapisal nov podatek

    <?php
    $host = "ip strežnika";
    $uporabnik = "uporabniško ime";
    $geslo = "geslo";
    $database = "ime baze podatkov (ang. Database)";

    // vzpostavi povezavo
    $povezava = mysqli_connect($host, $uporabnik, $geslo, $database);

    // preveri povezavo
    if (!$povezava) {
        die("Povezava ni uspela: " . mysqli_connect_error());
    }

    $sql = "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        VALUES (2, 'Janez', 'Kranjski', 243, 'Gorenjska');";
    $sql .= "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        VALUES (3, 'Peter', 'Cuderman', 44, 'Štajerska');";
    $sql .= "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        VALUES (4, 'Jana', 'Faštrovec', 32, 'Dolenjska');";
    $sql .= "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        VALUES (5, 'Petra', 'Vojvoda', 92, 'Prekmurje');";
    $sql .= "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        VALUES (6, 'Helena', 'Horvat', 22, 'Štajerska');";
    $sql .= "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        VALUES (7, 'Janko', 'Pravljični', 421, 'Gorenjska');";
    $sql .= "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        VALUES (8, 'Metka', 'Pokraculja', 213, 'Gorenjska');";
    $sql .= "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        VALUES (9, 'Pater', 'Kranjski', 12, 'Primorska');";
    $sql .= "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        VALUES (10, 'Viktor', 'Vladni', 88, 'Primorska');";
    $sql .= "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        VALUES (11, 'Borut', 'Jest', 47, 'Prekmurje');";
    $sql .= "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        VALUES (12, 'Renata', 'Rozman', 52, 'Gorenjska');";
    $sql .= "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        VALUES (13, 'Pastir', 'Cvetko', 92, 'Gorenjska')";

    if (mysqli_multi_query($povezava, $sql)) {
        echo "Pravilno si zapisal nov podatek";
    }   else {
        echo "Napaka: " .$sql . "<br>" . mysqli_error($povezava);
    }

    mysqli_close($povezava);
    ?>
            

Podatki, ki sem jih vpisal v tabelo:

Vpisovanje podatkov

Ko vpišemo nove podatke v tabelo, se nam v MySQL phpMyAdmin pojavi nova tabela, ki je pod določenim zaporedjem, številko. Ta številka predstavlja ID, ki ga lahko izpišemo, medtem ko vpišemo nove podatke v tabelo.

Zadnji vpisan ID je: 15

    <?php
    $host = "ip strežnika";
    $uporabnik = "uporabniško ime";
    $geslo = "geslo";
    $database = "ime baze podatkov (ang. Database)";

    // vzpostavi povezavo
    $povezava = mysqli_connect($host, $uporabnik, $geslo, $database);

    // preveri povezavo
    if (!$povezava) {
        die("Povezava ni uspela: " . mysqli_connect_error());
    }

    $sql = "INSERT INTO mojaTabela (id, firstname, lastname, age, hometown)
        values (15, 'Zadnji', 'Vpisani', 111, 'nekje')";

    if (mysqli_query($povezava, $sql)) {
        $zadnji_ID = mysqli_insert_id($povezava);
        echo "Uspešno si vpisal nov vzorec. Zadnji vpisan ID je: " . $zadnji_ID;
    }   else {
        echo "Pojavila se je napaka: " . $sql . "<br>" . mysqli_error($povezava);
    }

    mysqli_close($povezava);
    ?>
            

V PHP Storm console lahko zadnji IP v tabeli preverimo z vpisom SELECT MAX(id) FROM mojaTabela seveda ko nastavimo Database. Pa si oglejmo kako nastavimo nov Database, da lahko s pomočjo PHP Storm preverjamo naše MySQL tabele.

V PHP Storm gremo na View, Tool Windows kjer izberemo Database (če smo ga že prej odprli, se nahaja na desni strani). Ker je seznam prazen (če seveda nismo že nastavljali), kliknemo na + v levem kotu Database okna. Odpre se nam veliko strežnikov med katerimi lahko izbiramo, najbolj pogost je MariaDB, ki ga izberemo in vpišemo potrebne podatke, to so geslo, uporabniško ime in url naše podatkovne baze.

Database 1
Database 2
Database 3

Če smo vpisali cel kup podatkov, jih moramo sedaj še prebrati na naši spletni strani. Preprosto bomo izbrali vse vrstice, kamor smo vpisali podatke in seveda naslov tabele, iz katere želimo brati.

1 || Borut || Bukovnik || 48 || gorenjska ||
2 || Janez || Kranjski || 243 || Gorenjska ||
3 || Peter || Cuderman || 44 || Štajerska ||
4 || Jana || Faštrovec || 32 || Dolenjska ||
5 || Petra || Vojvoda || 92 || Prekmurje ||
6 || Helena || Horvat || 22 || Štajerska ||
7 || Janko || Pravljični || 421 || Gorenjska ||
8 || Metka || Pokraculja || 213 || Gorenjska ||
9 || Pater || Kranjski || 12 || Primorska ||
10 || Viktor || Vladni || 88 || Primorska ||
11 || Borut || Jest || 47 || Prekmurje ||
12 || Renata || Rozman || 52 || Gorenjska ||
13 || Pastir || Cvetko || 92 || Gorenjska ||
14 || Modri || Dirkač || 0 || noro hiter ||
15 || Zadnji || Vpisani || 111 || nekje ||
            
    <?php
    $host = "ip strežnika";
    $uporabnik = "uporabniško ime";
    $geslo = "geslo";
    $database = "ime baze podatkov (ang. Database)";

    // vzpostavi povezavo
    $povezava = mysqli_connect($host, $uporabnik, $geslo, $database);

    // preveri povezavo
    if (!$povezava) {
        die("Povezava ni uspela: " . mysqli_connect_error());
    }

    $sql = "SELECT id, firstname, lastname, age, hometown FROM mojaTabela";
    $podatki = mysqli_query($povezava, $sql);

    if (mysqli_num_rows($podatki) > 0) {
        while ($row = mysqli_fetch_assoc($podatki)) {
            echo $row["id"]. " || " . $row["firstname"]. " || " . $row["lastname"]. " || " . $row["age"] . " || " . $row["hometown"] . " || " . "<br>";
        }
    }   else {
        echo "0 results";
    }

    mysqli_close($povezava);
            

Ker smo nastavili Database, in lahko preverimo našo tabelo tam z ukazom SELECT * FROM mojaTabela, ki pa zgleda kot prikazuje spodnja slika..

Branje tabele
1 2 3