Duomenų saugojimas

Duomenų bazė

tiny.lt/cm

Pasirinkimai

  • mysql_*
     
  • mysqli_*
     
  • PDO

mysqli_connect()

Prisijungimas prie duomenų bazės.

 

Argumentai:

  • $server
  • $username
  • $password
  • $database
<?php
// Bandome prisijungti prie DB
$connection = mysqli_connect(
    'localhost',
    $username,
    $password,
    $dbname
);

// Patikriname ar prisijungimas pavyko
if( false === $connection ) {
    // ką daryti, jei įvyko klaida?
}
?>

UTF-8

UTF-8 koduotės nustatymas.

 

Argumentai:

  • $connection
  • $charset
<?php
// Bandome prisijungti prie DB
$connection = mysqli_connect(
    'localhost',
    $username,
    $password,
    $dbname
);

// Patikriname ar prisijungimas pavyko
if( false === $connection ) {
    // ką daryti, jei įvyko klaida?
}
// koduotės nustatymas
mysqli_set_charset( $connection, 'utf8' );
?>

mysqli_connect()

Supakuota į funkciją

<?php
// Bandome prisijungti prie DB
function db_connect() {
    $connection = mysqli_connect(
        'localhost',
        $username,
        $password,
        $dbname
    );
    // Patikriname ar prisijungimas pavyko
    if( false === $connection ) {
        // ką daryti, jei įvyko klaida?
        return mysqli_connect_error();
    }
    mysqli_set_charset( $connection, 'utf8' );
    return $connection;
}
?>

Užklausų vykdymas

mysqli_query()

Argumentai:

  • $connection
  • $query

 

Rezultatas - mysqli objektas.

<?php
// Bandome prisijungti prie DB
$connection = db_connect();

// Suformuojame užklausą
$query = "SELECT * FROM `products`";
// Siunčiame užklausą į MySQL
$result = mysqli_query($connection,$query);

?>

Eilučių išgavimas

  • mysqli_fetch_assoc()
    asociatyvus masyvas
     
  • mysqli_fetch_row()
    numeruotas masyvas

     
  • mysqli_fetch_array()
    asociatyvus IR numeruotas masyvas
     
  • mysqli_fetch_object()
    objektas 
<?php
// Bandome prisijungti prie DB
$connection = db_connect();

// Suformuojame užklausą
$query = "SELECT * FROM `products`";
// Siunčiame užklausą į MySQL
$result = mysqli_query($connection,$query);

// nuskaitome eilutes į masyvą
$rows = array();
while ($row = mysqli_fetch_assoc($result)) {
    $rows[] = $row;
}

?>

Supakuota į funkciją

Duomenų išgavimas

 

Argumentai:

  • $connection
  • $query
<?php
function db_query($connection,$query) {
    // siunčiame užklausą į MySQL
    $result = mysqli_query($connection,$query);
    // nuskaitome eilutes į masyvą
    if (false === $result) {
        return mysqli_error($connection);
    } else {
        $rows = array();
        while ($row = mysqli_fetch_assoc($result)) {
            $rows[] = $row;
        }
        return $rows;
    }
}
?>

Duomenų išgavimas

Galutinis variantas

<?php
// Bandome prisijungti prie DB
$connection = db_connect();

// Suformuojame užklausą
$query = "SELECT * FROM `products`";

// Siunčiame užklausą į MySQL 
// ir gauname eilučių masyvą.
$row = db_query($connection,$query);

// toliau dirbame su rezultatais
// pvz. išvedame naudojant print_r()
// arba foreach() ciklą

?>

Saugumas. SQL injekcijos

Prisijungimo forma, tikrinama

<?php
$connection = db_connect();
$query = "SELECT * FROM `users` WHERE 
`password`='{$_POST['pass']}'
AND 
`user`='{$_POST['user']}' 
";
$row = db_query($connection,$query);
if (sizeof($row)>0) {
  // rodyti slaptą informaciją
}
?>

Saugumas. SQL injekcijos

POST duomenys:

  • user => Petras
  • pass => labas

 

SELECT * FROM `users` WHERE `password`='labas' AND `user`='Petras'

<?php
$connection = db_connect();
$query = "SELECT * FROM `users` WHERE 
`password`='{$_POST['pass']}'
AND 
`user`='{$_POST['user']}' 
";
$row = db_query($connection,$query);
if (sizeof($row)>0) {
  // rodyti slaptą informaciją
}
?>

Saugimas. SQL injekcijos

POST duomenys:

  • user => Petras
  • pass => blab

 

SELECT * FROM `users` WHERE `password`='blab' AND `user`='Petras'

<?php
$connection = db_connect();
$query = "SELECT * FROM `users` WHERE 
`password`='{$_POST['pass']}'
AND 
`user`='{$_POST['user']}' 
";
$row = db_query($connection,$query);
if (sizeof($row)>0) {
  // rodyti slaptą informaciją
}
?>

Saugumas. SQL injekcijos

POST duomenys:

  • user => Petras
  • pass => blab' OR 'a'='a

 

SELECT * FROM `users` WHERE `password`='blab' OR 'a'='a' AND `user`='Petras'

<?php
$connection = db_connect();
$query = "SELECT * FROM `users` WHERE 
`password`='{$_POST['pass']}'
AND 
`user`='{$_POST['user']}' 
";
$row = db_query($connection,$query);
if (sizeof($row)>0) {
  // rodyti slaptą informaciją
}
?>

Apsauga nuo SQL injekcijų

mysqli_real_escape_string

<?php
$connection = db_connect();
$user = mysqli_real_escape_string(
  $connection, $_POST['user']
);
$pass = mysqli_real_escape_string(
  $connection, $_POST['pass']
);
$query = "SELECT * FROM `users` WHERE 
`password`='{$pass}'
AND 
`user`='{$user}' 
";
$row = db_query($connection,$query);
if (sizeof($row)>0) {
  // rodyti slaptą informaciją
}
?>

Laboratorinis darbas

Patobulinti ankstesniame laboratoriniame darbe sukurtą registracijos formą - saugoti duomenis į duomenų bazę.

  • Suprojektuoti ir suformuoti duomenų bazė
  • Sukurti išsaugojimo duomenų bazėje skriptą

 

Sukurti užsiregistravusių žmonių peržiūros langą.

 

 

  • Registracijų sąrašas
  • Paspaudus - visa informacija apie vieną žmogų.