Erinevus lehekülje "PHP MySQL asemel MySQLi" redaktsioonide vahel

Allikas: Kuutõrvaja
(MySQL ja MySQLi)
(Lingid)
144. rida: 144. rida:
  
 
=Lingid=
 
=Lingid=
 +
 +
http://php.net/manual/en/book.mysql.php
 +
 +
http://php.net/manual/en/book.mysqli.php
  
 
http://et.wikipedia.org/wiki/MySQL
 
http://et.wikipedia.org/wiki/MySQL

Redaktsioon: 30. märts 2015, kell 12:04

MySQL ja MySQLi

MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1995-ndal aastal.

MySQLi (MySQL Improved) on olemuselt sarnane MySQL süsteemiga, kuid on eelkäijaga võrreldes turvalisem, funktsionaalsem ning paremini hallatav nii algajatele kui edasijõudnutele.

Et üleminek oleks võimalikult valutu, kasutab MySQLi laiendus sarnaseid käske MySQL'ile. Näiteks:

 MySQL               MySQLi
 --------------------------------------
 mysql_connect       mysqli_connect
 mysql_error         mysqli_error
 mysql_query         mysqli_query
 mysql_fetch_array   mysqli_fetch_array
 mysql_fetch_row     mysqli_fetch_row
 mysql_fetch_assoc   mysqli_fetch_assoc
 mysql_free_result   mysqli_free_result
 mysql_close         mysqli_close

Näited

Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kergem muuta oleks.

<?php

// conf.database.php

$db_server = "localhost"; // server, kus asub andmebaas
$db_user   = "kasutaja";  // kasutajatunnus
$db_pass   = "parool";    // parool
$db_base   = "andmebaas"; // andmebaas

?>

Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. MySQL näide:

<?php

// dbc_mysql.php

include_once( "conf.database.php" ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad

$db = @mysql_connect( $db_server, $db_user, $db_pass ); // Loome andmebaasiga ühenduse (@ märk, et võimalikku veateadet ekraanile ei tuleks)

// Kui andmebaasiühendus ebaõnnestub
if ( !$db ) {
  die( "Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!" ); // Väljastame veateate ja lõpetame töö
}

mysql_select_db("$db_base", $db) or die( "Andmebaasi <b>" . $db_base . "</b> ei leitud!" ); // Kui andmebaasi valimine ebaõnnestub, väljastame veateate ja lõpetame töö

mysql_set_charset('utf8', $db); // määrame SQL andmete tähestikuks UTF-8
?>

MySQLi näide:

<?php
// dbc_mysqli.php

include_once( "conf.database.php" ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad

$db = @mysqli_connect( $db_server, $db_user, $db_pass, $db_base ); // Loome andmebaasiga ühenduse (@ märk, et veateateid ekraanile ei tuleks)

// Kui andmebaasiühendus ebaõnnestub
if ( !$db ) {
  die( "Meie andmebaasimootor hetkel streigib! Proovi palun hiljem uuesti!" ); // Väljastame veateate ja lõpetame töö
}

// mysqli_select_db käsk on küll olemas, kuid andmebaasi valimist on lihtsam teha läbi mysqli_connect'i

mysqli_set_charset( $db, 'utf8' ); // määrame SQL andmete tähestikuks UTF-8

?>

Järgnevalt mõned näited, kuidas MySQL ja MySQLi päringut luua.

<?php

// MySQL päring
echo "<br/> --- MySQL päring --- <br/><br/>";

include "dbc_mysql.php"; // Loome SQL ühenduse

$query = mysql_query( "select id, word from words limit 0, 10" ); // Teeme päringu

while ( $row = mysql_fetch_assoc( $query ) ) { // Käime läbi päringu tulemused
  echo $row['id'] . " - " . $row['word'] . "<br/>"; // Kuvame andmed ekraanile
}

// MySQLi päring
echo "<br/> --- MySQLi päring --- <br/><br/>";

include "dbc_mysqli.php";

$query = mysqli_query( $db, "select id, word from words limit 0, 10" ); // Teeme päringu

while ( $row = mysqli_fetch_assoc( $query ) ) {
  echo $row['id'] . " - " . $row['word'] . "<br/>"; // Toome read ekraanile
}

// MySQLi alternatiivne päring
echo "<br/> --- MySQLi alternatiivse päringu näide --- <br/><br/>";

$query = $db->query( "select id, word from words limit 0, 10" ); // Teeme päringu

while($row = $query->fetch_assoc()){
  echo $row['id'] . " - " . $row['word'] . "<br/>"; // Toome read ekraanile
}


class leht {

  // Klassi konstruktor
  function leht() {
    global $db; // Teeme $db muutuja globaalseks

    echo "<br/> --- MySQLi alternatiivse päringu näide klassi seest --- <br/><br/>";

    $query = $db->query( "select id, word from words limit 0, 10" ); // Teeme päringu

    while($row = $query->fetch_assoc()){
      echo $row['id'] . " - " . $row['word'] . "<br/>"; // Toome read ekraanile
    }

  }

}

new leht();

?>

Kõige lihtsam lahendus?

See sõltub suuresti veebirakenduse ülesehitusest. Kui SQL päringute jaoks on eraldi klass, siis on muudatuse tegemine ülimalt lihtne. Kui mysql_query käsud on php koodis laiali, siis tuleks ükshaaval need asendada mysqli_query käskudega, koos viitega andmebaasi ühendusele (näites $db muutuja).

Lingid

http://php.net/manual/en/book.mysql.php

http://php.net/manual/en/book.mysqli.php

http://et.wikipedia.org/wiki/MySQL

http://codular.com/php-mysqli

http://www.pontikis.net/blog/how-to-use-php-improved-mysqli-extension-and-why-you-should

http://metshein.com/index.php/veeb/php-edasijoudnutele/710-03-php-ja-mysql-php-sidumine-mysql-andmebaasiga