Fungsi dasar penggunaan PHP MySQLI untuk insert, update dan delete

 Author : hadinug, 18 March, 2014, Komentar

Setelah  mengalamai depriket pada ekstensi PHP MySQL pada tahun 2011 yang lalu, orang-orang secara perlahan mulai pindah dan mengupgrade ke metode yang lebih baik seperti PDO dan mysqli untuk berinteraksi dengan database. PDO dan mysqli adalah versi lanjut dari function mysql yang menawarkan API berorientasi obyek.

Hal ini bukan tugas yang mudah apalagi untuk sebuah situs besar yang sebelumnya menggunakan mysql function. Maka dari itu anda harus terlebih dahulu melakukan penelitian untuk mengetahui mana yang nanti akan sesuai dengan kebutuhan anda.



Namun pada artikel ini kita tidak akan memilih mana yang terbaik diantara dua tersebut, disini kita hanya akan membahas penggunaan dasar dari MySQLi . Jadi tanpa basa-basi , saya ingin menunjukkan kepada anda bagaimana kita dengan mudah dapat connect, select, insert dan update tabel menggunakan ekstensi PHP mysqli .


Instalasi mysqli

Jika anda menggunakan PHP versi 5.3.0 + , MySQLi sudah tersedia dan bisa segera digunaka, tapi jika masih menggunakan versi PHP 5.0 , 5.1 , 5.2 , ekstensi ini tidak diaktifkan secara default pada Windows Systems. Anda harus mengaktifkan DLL di php.ini untuk php_mysqli.dll . Untuk mengaktifkan ekstensi Anda perlu mengedit php.ini Anda bisa melakukan nya dengan mudah hanya dengan menghapus komentar ( semi- colon / [;] ) dari awal baris extension = php_mysqli.dll .


Melakukan koneksi ke database

Mysqli menawarkan dua cara untuk terhubung ke database , prosedural dan berorientasi objek, namun secara resmi direkomendasikan untuk membuka koneksi database adalah dengan cara berorientasi objek (OOP) . Gaya prosedural jauh mirip dengan MySql  function.


//procedural style
$mysqli =  mysqli_connect('host','username','password','database_name');

//object oriented style (recommended)
$mysqli = new mysqli('host','username','password','database_name');


Atau dengan sedikit improvisasi kita bisa melakukan koneksi database dengan MySQLI dengan cara seperti berikut:


<?php
//Open a new connection to the MySQL server
$mysqli = new mysqli('host','username','password','database_name');

//Output any connection error
if ($mysqli->connect_error) {
    die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

?>


SELECT Multiple Records as Associative array

Mengambil beberapa record sebagai array asosiatif. Array hasil keluaran diambil dari database, di mana nama kolom akan menjadi kunci yang digunakan untuk mengakses data secara internal. Seperti yang dapat anda lihat di bawah.

<?php
//Open a new connection to the MySQL server
$mysqli = new mysqli('host','username','password','database_name');

//Output any connection error
if ($mysqli->connect_error) {
    die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

//MySqli Select Query
$results = $mysqli->query("SELECT id, product_code, product_desc, price FROM products");

print '<table border="1">';
while($row = $results->fetch_assoc()) {
    print '<tr>';
    print '<td>'.$row["id"].'</td>';
    print '<td>'.$row["product_code"].'</td>';
    print '<td>'.$row["product_name"].'</td>';
    print '<td>'.$row["product_desc"].'</td>';
    print '<td>'.$row["price"].'</td>';
    print '</tr>';
}  
print '</table>';

// Frees the memory associated with a result
$results->free();

// close connection 
$mysqli->close();
?>

SELECT Multiple Records as Array

Mengembalikan array yang merupakan gabungan antara mysqli_fetch_row dan mysqli_fetch_assoc. Sedangkan pada versi umumnya berasal dari mysqli_fetch_row ().  Dimana antara data numerik dan string dapat digunakan sebagai kunci untuk mengakses data.

<?php
//Open a new connection to the MySQL server
$mysqli = new mysqli('host','username','password','database_name');

//Output any connection error
if ($mysqli->connect_error) {
    die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

//MySqli Select Query
$results = $mysqli->query("SELECT id, product_code, product_desc, price FROM products");

print '<table border="1">';
while($row = $results->fetch_object()) {
    print '<tr>';
    print '<td>'.$row->id.'</td>';
    print '<td>'.$row->product_code.'</td>';
    print '<td>'.$row->product_name.'</td>';
    print '<td>'.$row->product_desc.'</td>';
    print '<td>'.$row->price.'</td>';
    print '</tr>';
}  

print '</table>';

// close connection 
$mysqli->close();
?>

SELECT Single value

Bagaimana mendapatkan sebuah nilai dari database menggunakan fetch_object ().

<?php
//Open a new connection to the MySQL server
$mysqli = new mysqli('host','username','password','database_name');

//Output any connection error
if ($mysqli->connect_error) {
    die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

//chained PHP functions
$product_name = $mysqli->query("SELECT product_name FROM products WHERE id = 1")->fetch_object()->product_name; 
print $product_name; //output value

$mysqli->close();
?>

SELECT Using Prepared Statements

Fitur penting lainnya dari MySQLi, yang emungkinkan kita untuk menulis query hanya sekali dan kemudian dapat dieksekusi secara berulang dengan parameter yang berbeda-beda. Query disiapkan secara signifikan untuk meningkatkan kinerja yang lebih besar dan permintaan yang lebih kompleks. QUery diurai oleh server secara terpisah, sehingga tahan terhadap kode berbahaya (injeksi). 

Kode di bawah ini menggunakan pernyataan sisipan untuk mengambil informasi dari database. tanda ? dalam query SQL bertindak seperti penanda dan akan digantikan oleh parameter, bisa berupa string, integer, double atau float. Dalam kasus ini adalah string $search_product.

$search_product = "PD1001"; //product id

//create a prepared statement
$query = "SELECT id, product_code, product_desc, price FROM products WHERE product_code=?";
$statement = $mysqli->prepare($query);

//bind parameters for markers, where (s = string, i = integer, d = double,  b = blob)
$statement->bind_param('s', $search_product);

//execute query
$statement->execute();

//bind result variables
$statement->bind_result($id, $product_code, $product_desc, $price);

print '<table border="1">';

//fetch records
while($statement->fetch()) {
    print '<tr>';
    print '<td>'.$id.'</td>';
    print '<td>'.$product_code.'</td>';
    print '<td>'.$product_desc.'</td>';
    print '<td>'.$price.'</td>';
    print '</tr>';

}   
print '</table>';

//close connection
$statement->close();

Query yang sama dengan beberapa parameter:

$search_ID = 1; 
$search_product = "PD1001"; 

$query = "SELECT id, product_code, product_desc, price FROM products WHERE ID=? AND product_code=?";
$statement = $mysqli->prepare($query);
$statement->bind_param('is', $search_ID, $search_product);
$statement->execute();
$statement->bind_result($id, $product_code, $product_desc, $price);

print '<table border="1">';
while($statement->fetch()) {
    print '<tr>';
    print '<td>'.$id.'</td>';
    print '<td>'.$product_code.'</td>';
    print '<td>'.$product_desc.'</td>';
    print '<td>'.$price.'</td>';
    print '</tr>';

}   
print '</table>';

//close connection
$statement->close();

Insert Statement


<?php
//values to be inserted in database table
$product_code = '"'.$mysqli->real_escape_string('P1234').'"';
$product_name = '"'.$mysqli->real_escape_string('42 inch TV').'"';
$product_price = '"'.$mysqli->real_escape_string('600').'"';

//MySqli Insert Query
$insert_row = $mysqli->query("INSERT INTO products (product_code, product_name, price) VALUES($product_code, $product_name, $product_price)");

if($insert_row){
    print 'Success! ID of last inserted record is : ' .$mysqli->insert_id .'<br />'; 
}else{
    die('Error : ('. $mysqli->errno .') '. $mysqli->error);
}

?>

Masukkan nilai yang sama menggunakan pernyataan Prepared:

//values to be inserted in database table
$product_code = 'P1234';
$product_name = '42 inch TV';
$product_price = '600';

$query = "INSERT INTO products (product_code, product_name, price) VALUES(?, ?, ?)";
$statement = $mysqli->prepare($query);

//bind parameters for markers, where (s = string, i = integer, d = double,  b = blob)
$statement->bind_param('sss', $product_code, $product_name, $product_price);

if($statement->execute()){
    print 'Success! ID of last inserted record is : ' .$statement->insert_id .'<br />'; 
}else{
    die('Error : ('. $mysqli->errno .') '. $mysqli->error);
}
$statement->close();

Cara ini dinilai lebih aman untuk menghindari dari serangan injeksi pada mysql.

Insert multiple record

Untuk menyisipkan beberapa baris sekaligus, termasuk beberapa daftar nilai kolom, masing-masing tertutup dalam kurung dan dipisahkan dengan tanda koma. Kadang-kadang berguna untuk mengetahui berapa banyak result yang telah dimasukkan, diperbarui atau dihapus, Anda dapat menggunakan mysqli_affected_rows

//product 1
$product_code1 = '"'.$mysqli->real_escape_string('P1').'"';
$product_name1 = '"'.$mysqli->real_escape_string('Google Nexus').'"';
$product_price1 = '"'.$mysqli->real_escape_string('149').'"';

//product 2
$product_code2 = '"'.$mysqli->real_escape_string('P2').'"';
$product_name2 = '"'.$mysqli->real_escape_string('Apple iPad 2').'"';
$product_price2 = '"'.$mysqli->real_escape_string('217').'"';

//product 3
$product_code3 = '"'.$mysqli->real_escape_string('P3').'"';
$product_name3 = '"'.$mysqli->real_escape_string('Samsung Galaxy Note').'"';
$product_price3 = '"'.$mysqli->real_escape_string('259').'"';

//Insert multiple rows
$insert = $mysqli->query("INSERT INTO products(product_code, product_name, price) VALUES
($product_code1, $product_name1, $product_price1),
($product_code2, $product_name2, $product_price2),
($product_code3, $product_name3, $product_price3)");

if($insert){
    //return total inserted records using mysqli_affected_rows
    print 'Success! Total ' .$mysqli->affected_rows .' rows added.<br />'; 
}else{
    die('Error : ('. $mysqli->errno .') '. $mysqli->error);
}

Update record

Memperbarui dan menghapus informasi dengan cara, hanya mengubah query string untuk MySql Update.

//MySqli Update Query
$insert_row = $mysqli->query("UPDATE products SET product_name='52 inch TV', product_code='323343' WHERE ID=24");

//MySqli Delete Query
//$insert_row = $mysqli->query("DELETE FROM products WHERE ID=24");

if($insert_row){
    print 'Success! record updated'; 
}else{
    print 'Error : ('. $mysqli->errno .') '. $mysqli->error;
}

Mengubah informasi/ record dengan statement

$product_name = '52 inch TV';
$product_code = '9879798';
$find_id = 24;

$query = "UPDATE products SET product_name=?, product_code=? WHERE ID=?";
$statement = $mysqli->prepare($query);

//bind parameters for markers, where (s = string, i = integer, d = double,  b = blob)
$statement->bind_param('ssi', $product_name, $product_code, $find_id);

if($insert_row){
    print 'Success! record updated'; 
}else{
    print 'Error : ('. $mysqli->errno .') '. $mysqli->error;
}

kesimpulan 

Jelas mysqli adalah perpanjangan MySql Regular di PHP, dan penerapan nya juga tidak jauh berbeda. Saya hanya berharap artikel ini akan membantu anda untuk bermigrasi / membangun proyek-proyek di masa depan anda dengan mysqli.
Selamat mencoba!


 
Bagikan halaman ke sosial media
 
Tags :   php    mysqli       

Tentang Penulis

writer hadinug
Web Developer di PT. Yafii Solusi Internasional

Link: http://ysi.co.id

   Komentar Anda