Hướng dẫn tìm và sửa lỗi PHP cơ bản

16.04.2017 / 18:40
MrKen
Bài đăng: 2643
Trùm!
Vẫn là A N H

Đối với những người mới tập viết code thì việc tìm lỗi khá khó khăn, hoặc có thể hoàn toàn không biết, hoặc nếu biết thì nhiều trường hợp không biết cách sửa lỗi. Vì vậy tại topic này mình sẽ hướng dẫn các bạn tìm và sửa những lỗi cơ bản khi viết code PHP.

Cách tìm lỗi trong code PHP

Để có thể tìm được lỗi thì các bạn cần bật chức năng hiển thị lỗi của PHP lên. Sau khi bật lên, nếu trong code có lỗi, các lỗi sẽ được hiện chi tiết về thông tin, tên file lỗi và dòng lỗi lên màn hình. Hãy thêm đoạn code sau vào đầu các file cần tìm lỗi, hoặc vào file được include (require) vào tất cả các file khác:

PHP
  1. ini_set('display_errors', 1);
  2. ini_set('display_startup_errors', 1);
  3. error_reporting(-1);

Lưu ý: nhiều mã nguồn đã tắt thiết lập hiển thị lỗi bằng các cú pháp tương tự trên, các bạn cần tìm và xóa đi.

Cách tìm lỗi đối với mysql_query, mysqli_query

Đối với hàm mysql_query, để hiển thị lỗi chúng ta chỉ cần viết code như sau:

PHP
  1. $query = mysql_query('SELECT * FROM `users`') or die(mysql_error());
  2. mysql_query('INSERT INTO `users`') or die(mysql_error());
  3. mysql_query('UPDATE `users`') or die(mysql_error());
  4. mysql_query('DELETE FROM `users`') or die(mysql_error());
  5. $query = mysqli_query($conn, 'SELECT * FROM `users`') or die(mysqli_error($conn));
  6. // $conn là biến được gán từ mysqli_connect

Sau khi fix lỗi xong, các bạn có thể xóa phần sau đi hoặc để nguyên như vậy cũng không sao.

HƯỚNG DẪN FIX CÁC LỖI CƠ BẢN

Dù các bạn có bật hiển thị lỗi hay không, dù lỗi có ảnh hưởng đến chức năng hay không thì những lỗi này ít nhiều sẽ ảnh hưởng đến tốc độ tải trang. Đó là lý do chúng ta cần sửa hết lỗi dù là nhỏ nhất.

- Undefined index: ... in ... on line ...

Lỗi này xảy ra khi phần tử của mảng không tồn tại. Ví dụ như bạn sử dụng $user['job'] trong khi không có cột job trong bảng users. Một trường hợp thường gặp nhất là việc sử dụng các biến GET, POST. Nguyên nhân là do sử dụng các biến GET, POST mà không qua xử lý.

Để sửa lỗi này, các bạn cần xử lý các biến này trước khi sử dụng.

PHP
  1. $textGet = isset($_GET['text']) ? trim($_GET['text']) : ''; // string
  2. $numberGet = isset($_GET['number']) ? abs(intval($_GET['number'])) : 0; // number
  3. $textPost = isset($_POST['text']) ? trim($_POST['text']) : ''; // string
  4. $numberPost = isset($_POST['number']) ? abs(intval($_POST['number'])) : 0; // number

- Undefined variable: ... in ... on line ...

Lỗi này xảy ra khi bạn sử dụng biến chưa được gán giá trị. Ví dụ:

PHP
  1. echo $a;
  2. $b .= 'Phố Nhỏ';
  3. ++$c

Để sửa lỗi này, chỉ cần định giá trị cho biến trước khi sử dụng.

PHP
  1. $a = 'Hello world!';
  2. $b = '';
  3. $c = 1;
  4. echo $a;
  5. $b .= 'Phố Nhỏ';
  6. ++$c

____________________

Lưu ý:

- Nếu bạn đang sử dụng một code được share trên mạng, hãy bật debug lên và trải nghiệm!

- Nếu bạn mới tập viết code và mắc những lỗi thuộc dạng cơ bản mà không có ở trên, vui lòng để lại bình luận để mọi người có thể hỗ trợ!

Thân!

Đã chỉnh sửa. MrKen (05.10.2017 / 00:15)
16.04.2017 / 19:53
PMTpro
Bài đăng: 464
Member
khóc chỉ làm rơi lệ!

Nếu chúng ta viết code bị lỗi. Hãy đọc lại toàn bộ code chúng ta mới viết(để làm gì thì cứ đọc lại rồi biết. Đôi khi code cuả bạn chỉ sai về dấu ' và " ). Nếu code có dính if..else hãy kiểm tra lại thật kĩ thuật toán. Không nên nhờ vả khi "khả năng của ta có thể fix được lỗi đó" hoặc do bạn qúa "lười", thói quen đó k giúp ích j cho bạn đâu :yaoming:

Đã chỉnh sửa. PMTpro (16.04.2017 / 19:57)