Đố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:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); 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:
$query = mysql_query('SELECT * FROM `users`') or die(mysql_error()); mysql_query('INSERT INTO `users`') or die(mysql_error()); mysql_query('UPDATE `users`') or die(mysql_error()); mysql_query('DELETE FROM `users`') or die(mysql_error()); $query = mysqli_query($conn, 'SELECT * FROM `users`') or die(mysqli_error($conn)); // $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.
$textGet = isset($_GET['text']) ? trim($_GET['text']) : ''; // string $numberGet = isset($_GET['number']) ? abs(intval($_GET['number'])) : 0; // number $textPost = isset($_POST['text']) ? trim($_POST['text']) : ''; // string $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ụ:
echo $a; $b .= 'Phố Nhỏ'; ++$c
Để sửa lỗi này, chỉ cần định giá trị cho biến trước khi sử dụng.
$a = 'Hello world!'; $b = ''; $c = 1; echo $a; $b .= 'Phố Nhỏ'; ++$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!