Erinevus lehekülje "PHP MySQL asemel MySQLi" redaktsioonide vahel
(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...') |
(→Näited) |
||
18. rida: | 18. rida: | ||
=Näited= | =Näited= | ||
− | Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel | + | Mõttekas on andmebaasi ühenduse loomise parameetrid hoida ülejäänud koodist eraldi, et seda vajadusel kergem muuta oleks. |
<source lang="php"> | <source lang="php"> | ||
33. rida: | 33. rida: | ||
</source> | </source> | ||
− | Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. | + | Andmebaasiga ühenduse loomise kood on samuti mõttekas eraldi failis hoida, et seda vajadusel PHP faili laadida. MySQL näide: |
<source lang="php"> | <source lang="php"> | ||
56. rida: | 56. rida: | ||
<source lang="php"> | <source lang="php"> | ||
+ | |||
+ | MySQLi näide: | ||
+ | |||
<?php | <?php | ||
+ | // dbc_mysqli.php | ||
include_once( "conf.database.php" ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad | include_once( "conf.database.php" ); // Lisame andmebaasi ühenduse jaoks vajalikud muutujad | ||
79. rida: | 83. rida: | ||
<?php | <?php | ||
− | // MySQL | + | // MySQL päring |
echo "<br/> --- MySQL päring --- <br/><br/>"; | echo "<br/> --- MySQL päring --- <br/><br/>"; | ||
90. rida: | 94. rida: | ||
} | } | ||
− | // MySQLi | + | // MySQLi päring |
echo "<br/> --- MySQLi päring --- <br/><br/>"; | echo "<br/> --- MySQLi päring --- <br/><br/>"; | ||
98. rida: | 102. rida: | ||
while ( $row = mysqli_fetch_assoc( $query ) ) { | while ( $row = mysqli_fetch_assoc( $query ) ) { | ||
− | echo $row['id'] . " - " . $row['word'] . "<br/>"; | + | echo $row['id'] . " - " . $row['word'] . "<br/>"; // Toome read ekraanile |
} | } | ||
107. rida: | 111. rida: | ||
while($row = $query->fetch_assoc()){ | while($row = $query->fetch_assoc()){ | ||
− | echo $row['id'] . " - " . $row['word'] . "<br/>"; | + | echo $row['id'] . " - " . $row['word'] . "<br/>"; // Toome read ekraanile |
} | } | ||
122. rida: | 126. rida: | ||
while($row = $query->fetch_assoc()){ | while($row = $query->fetch_assoc()){ | ||
− | echo $row['id'] . " - " . $row['word'] . "<br/>"; | + | echo $row['id'] . " - " . $row['word'] . "<br/>"; // Toome read ekraanile |
} | } | ||
Redaktsioon: 27. märts 2015, kell 15:34
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 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://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