Sử dụng CSDL MySQL | ||||||
CSDL là 1 phần quan trọng không thể thể thiếu được trong các ứng dụng web chuyên nghiệp. MySQL từ lâu đã là hệ CSDL được dùng phổ biến nhất với PHP vì tính gọn nhẹ, nhanh, miễn phí và được PHP hỗ trợ sẵn. Trong bài viết này chúng ta sẽ tìm hiểu cách kết nối vào CSDL MySQL, truy cập và lưu trữ dữ liệu với PHP. GIỚI THIỆU CSDL là 1 phần quan trọng không thể thể thiếu được trong các ứng dụng web chuyên nghiệp. MySQL từ lâu đã là hệ CSDL được dùng phổ biến nhất với PHP vì tính gọn nhẹ, nhanh, miễn phí và được PHP hỗ trợ sẵn. Trong bài viết này chúng ta sẽ tìm hiểu cách kết nối vào CSDL MySQL, truy cập và lưu trữ dữ liệu với PHP. Để thực hành các ví dụ trong bài viết này, bạn cần phải cài MySQL vào máy của bạn. Xem như bạn đã cài đặt MySQL lên cùng server với PHP và account để kết nối vào MySQL Server có username là root và mật mã (password) là rỗng. Ngoài ra, bài viết này giới thiệu về cách làm việc với CSDL MySQL trong PHP, cho nên xem như là bạn đã có một số kiến thức căn bản về MySQL và ngôn ngữ SQL. KẾT NỐI VÀO MYSQL SERVER PHP cung cấp hàm mysql_connect để kết nối vèo MySQL server. Cú pháp của hàm này như sau: mysql_connect($server_address, $username, $password)$server_address là địa chỉ của MySQL server, có thể là domain name hoặc IP address, các ví dụ trong bài viết này sẽ dùng giá trị "localhost" cho $server_address. $username là tên account dùng để login vào MySQL server, các ví dụ trong bài viết sẽ sử dụng giá trị "root" cho $username. $password là mật mã để kết nối vào MySQL server, các ví dụ trong bài viết sẽ sử dụng chuỗi rỗng "" làm mật mã. Hàm mysql_connect sẽ trả về 1 kết nối đến MySQL server nếu như quá trình kết nối thành công, hoặc trả về giá trị FALSE nếu như kết nối không được. Để đóng kết nối tới MySQL server, PHP cung cấp hàm mysql_close. Đoạn mã sau ví dụ quá trình kết nối vào MySQL server và đóng kết nối. <?php CHỌN CSDL ĐỂ LÀM VIỆC Sau khi connet vào MySQL server, thao tác tiếp theo là chọn CSDL để làm việc. PHP cung cấp cho ta hàm mysql_select_db để làm việc này. Cú pháp của hàm này như sau: mysql_select_db($db_name[, $conn])Với $db_name là tên CSDL cần chọn, $conn là kết nối được thực hiện qua lệnh mysql_connect. Các ví dụ trong bài viết này sẽ sử dụng CSDL có tên là test: <?php THỰC THI 1 CÂU LỆNH SELECT VÀ LẤY KẾT QUẢ TRẢ VỀ PHP cung cấp cho ta 3 hàm hữu dụng để thực hiện công việc này:
Các ví dụ của ta sẽ sử dụng table có tên là member với các trường và dữ liệu như sau:
Ví dụ 1: dùng mysql_fetch_row() <?phpHàm mysql_fetch_row() sẽ trả về 1 array mà phần tử thứ [0] sẽ tương ứng với cột đầu tiên của table, phần tử thứ [1] sẽ tương ứng với cột thứ hai của table...Chương trình trên sẽ in ra ra 4 dòng: Username = abc Ví dụ 2: dùng mysql_fetch_assoc() <?phpHàm mysql_fetch_assoc() sẽ trả về 1 array mà các phần tử sẽ được truy cập qua tên, với tên được lấy từ tên các cột của table. Chương trình ví dụ 2 cũng sẽ in ra ra 4 dòng: Username = abc THỰC THI 1 CÂU LỆNH UPDATE, INSERT hoặc DELETE Hàm mysql_query cũng được dùng để thực thi các câu lệnh DELETE, INSERT hoặc UPDATE, nhưng lúc này hàm sẽ trả về TRUE nếu câu lệnh thực hiện thành công và FALSE trong trường hợp ngược lại. Để lấy số lượng các row được chèn với lệnh INSERT hoặc bị thay đổi bởi lệnh UPDATE, PHP cung cấp cho ta hàm mysql_affected_rows. Ta hãy xem ví dụ sau: <?php LƯU Ý VẤN ĐỀ BẢO MẬT VỚI LỖI SQL INJECTION Nếu bạn cần cung cấp 1 tham số cho câu lệnh SQL, nhất là các tham số từ trình duyệt do người dùng nhập vào, bạn hãy lưu ý đề phòng lỗi bảo mật SQL Injection. Giả sử bạn muốn thay đổi mật mã của account xyz, mật mã mới được người dùng nhập vào và lưu vào trong biến $newPwd, đoạn mã đổi password có thể tương tự như sau: <?php Giả sử người dùng nhập vào mật mã mới là zzz, câu lệnh SQL sẽ trở thành UPDATE member SET password='zzz' WHERE username='xyz' Hoàn toàn hợp lệ và đúng đắn, không có gì phải thắc mắc hết. Nhưng giả sử người dùng nhập vào mật mã mới là zzz'#, câu lệnh SQL sẽ trở thành UPDATE member SET password='zzz'#' WHERE username='xyz' Nhưng gì phía sau ký tự # sẽ được MySQL xem là chú thích và sẽ bỏ qua, như vậy câu lệnh SQL của chúng ta trên thực tế sẽ tương đương với: UPDATE member SET password='zzz' Vậy là xong! Sau khi chạy câu lệnh này, password của tất cả các account đều là zzz hết, tất hiên là account admin cũng sẽ bị đổi password thành zzz và lúc này hậu quả tiếp theo ra sao chắc bạn cũng đã rõ! Để tránh bị SQL injection, khi đưa các tham số vào câu lệnh SQL, bạn nên luôn nhớ và áp dụng 2 điều sau:
TRƯỚC KHI KẾT THÚC Đến đây, bạn đã nắm được các bước cơ bản để làm việc với CSDL MySQL Server: - Kết nối vào MySQL Server với server address, username và password - Chọn CSDL để làm việc - Thao tác với CSDL, Thực thi các lệnh SQL... - Đóng kết nối khi kết thúc Trong thực tế, đôi lúc chương trình của bạn cần thực hiện thêm nhiều thao tác nâng cao hơn thế, lúc này bạn đừng quên tham khảo MySQL Manual mục các hàm về MySQL. CÁC HÀM PHP ĐƯỢC DÙNG TRONG VÍ DỤ
| ||||||
Nguồn : thuviensv.com |
KẾT NỐI VÀO MYSQL SERVER
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét