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

Allikas: Kuutõrvaja
(Uus lehekülg: '=MySQL ja MySQLi= MySQL on maailma üks enimlevinud relatsioonilise andmebaasi haldamise süsteeme, millesse saab päringud esitada standardiseeritult. Esimene versioon valmis 1...')
(Erinevus puudub)

Redaktsioon: 27. märts 2015, kell 14:22

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_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 kerge 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.

<?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
?>
<?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 näide
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 näide
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/>";
}

// 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/>";
}


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/>";
    }

  }

}

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://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