Kết nối database trong php

Sau khi tìm hiểu cơ bản của phpmyadmin và mysql. Phần này mình hướng dẫn các bạn cách kết nối cơ sở dữ liệu trong php và các câu lệnh sql đơn giản như select, insert, update, delete dữ liệu của php
  • 14:40 22/11/2016
  • Kỳ Nhân
  • 0 Bình luận
  • 3006

- Sau khi tạo database trong phpmyadmin. Để có thể kết nối cơ sở dữ liệu vào php các bạn cần tìm hiểu một số hàm php mysql được hỗ trợ

- Để hiểu rõ hơn phần này các bạn tạo một dự án php trong www nha. Mình tạo folder php trong www và file index.php bên trong folder php. Khi đó đường dẫn chạy dự án là localhost/php/ nha các bạn.

- Tận dụng lại databse bài trước là database_new có table bên trong là groups luôn nha. Các bạn chưa đọc thì tìm hiểu bài cơ bản về phpmyadmin nha.

+ Hàm kết nối database trong php

Cú pháp:

mysql_connect('localhost', 'mysql_user', 'mysql_password');

Ứng dụng:

<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

Hàm die('Thong_bao') được sử dụng ngắt câu lệnh php và dừng tại đó và không chạy tiếp các câu lệnh phía sau. Hàm này giúp chúng ta biết được code php lỗi ở chỗ nào và tiến hành sửa chữa

Hàm mysql_error() hiện thông báo khi có lỗi đối với mysql trong phpmyadmin.

Hàm mysql_close($link) dùng để ngắt kết nối database hạn chế truy cập nhiều làm nghẽn server

+ Hàm chọn database sau khi kết nối thành công

<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
    die('Not connected : ' . mysql_error());
}
// chon tên database
$db_selected = mysql_select_db('database_new', $link);
if (!$db_selected) {
    die ('khong ket noi : ' . mysql_error());
}
mysql_query('SET NAMES "utf8"');
mysql_close($link);
?>

Hàm mysql_query('SET NAMES "utf8"') dùng để set ngôn ngữ tiếng Việt tránh bị lỗi ký tự

Hàm mysql_connect sử dụng được trong các phiên bản php 4 và 5. Tuy nhiên khi php lên phiên bản 5.5 thì được thay thế và phiên bản 7 hàm đã bị xóa và thay bằng hàm khác là

mysqli_connect("host", "my_user", "my_password", "my_db");

Ứng dụng

<?php
$link = mysqli_connect("localhost", "root", "", "database_new");
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo "Connected successfully";
mysqli_close($link);
?>

Quan sát hàm trên thì ngắn ngọn hơn vì hàm đầu tiên sau khi kết nối các bạn cần phải thêm hàm chọn database, còn hàm dưới không cần thêm hàm chọn database nữa, tuy nhiên hàm này yêu cầu php version hơi cao

+ Hàm xem thông tin php

<?php phpinfo(); ?>

- Sau khi kết nối thành công, giờ là lúc tìm hiểu các hàm thêm, xóa, sửa trong mysql bằng php

- File index.php có nội dung sau khi kết nối database như sau:

<?php
$link = mysqli_connect("localhost", "root", "", "database_new");
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo "Connected successfully";
mysqli_close($link);
?>

Do mình cài phiên bản php 5.5.12 nên mình hướng dẫn các bạn hàm mysqli, còn nếu các bạn gặp phải phiên bản php thấp hơn thì chỉ cần sử dung mysql thôi nha

+ Hàm truy vấn dữ liệu từ database

mysqli_query($link, 'cau_truy_van');

Truy vấn hiện ra danh sách title của table groups ta viết hàm như sau

<?php
$link = mysqli_connect("localhost", "root", "", "database_new");
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo "Connected successfully < br >";
mysqli_query($link, 'SET NAMES "utf8"');
$sql = "select * from groups";
$query = mysqli_query($link, $sql);
while ($item = mysqli_fetch_assoc($query)){
    echo $item['title']."< br >";
}
mysqli_free_result($query);
mysqli_close($link);
?>

- Hàm mysqli_query($link, 'SET NAMES "utf8"'); với mục đích set về ngôn ngữ tiếng Việt, tránh tình trạng lỗi ngôn ngôn ngữ

- Hàm mysqli_fetch_assoc($query) hàm này dùng để hiện ra các dữ liệu theo dạng mảng sau khi câu lệnh query thành công. Để biết mảng in ra như thế nào các bạn dùng hàm print_r($item); và đặt trước hàm echo trong vòng lặp while là biết

- Hàm echo dùng in ra giá trị cần thiết. Do cần in ra danh sách trường title của bảng groups nên mình echo $item['title'] còn nếu muốn in ra biến id hay body thì sài echo $item['id'] hoặc echo $item['body'] thôi.

- Hàm mysqli_free_result($query); dùng xóa dữ liệu biến, thường khi các bạn khởi tạo biến thì sau câu lệnh, biến đó sẽ không mất đi mà tồn tại mãi, các giá trị trong biến cũng vậy, điều này làm chiếm mất bộ nhớ trên server, nên đễ tốt thì sau khi làm xong xóa hết dữ liệu biến đó đi.

+ Hàm insert dữ liệu vào database

$sql = "insert into groups(`title`,`body`,`create_at`) values('tiêu đề 2','body 2','12345')";
$query = mysqli_query($link, $sql);

Cũng giống cách sử dụng hàm mysqli_query chỉ khác câu lệnh truyền vào biền sql thôi

+ Hàm sửa dữ liệu trong database dựa theo điều kiện

$sql = "update groups set title='tiêu đề 2 update' where id=2";
$query = mysqli_query($link, $sql);

+ Hàm xóa dữ liệu trong database

$sql = "delete from groups where id=2";
$query = mysqli_query($link, $sql);

- Sau khi các bạn copy các hàm insert, sửa, xóa vào file index.php bên trên hàm mysqli_close($link); rồi các bạn refesh tại link localhost/php/ rồi kiểm tra lại trong phpmyadmin xem database_new, bảng groups có thêm, xóa, sửa các trường tương ứng không nha.

- Vậy phần kết nối cơ sỡ dữ liệu trong php các bạn đã tìm hiểu được phần nào. Phần này nói khó cũng không khó, dễ cũng không dễ, vì toàn bộ toàn dựa vào các câu lệnh query trong sql. Các bạn phải tìm hiểu nhiều câu lệnh sql thì phần này dễ dàng.

- Tuy nhiên các bạn mới học nên các phần sau theo từng bài tập mà viết câu lệnh hợp lý là được, vì khi đi làm mấy câu lệnh sql cũng không phức tạp nhiều.