Hướng dẫn fix lỗi Unexpected double-quoted (single-quoted) string trong PHP
Hiện tượng lỗi
Code PHP không chạy, màn hình không xuất kết quả.
Response trả về với Status code là 500 (Server Internal Error)
Error Log hiển thị đối với phiên bản PHP >= 7.0.0
Parse error: syntax error, unexpected double-quoted string …, expecting “…” or “….” in … on line …
hoặc
Parse error: syntax error, unexpected single-quoted string …, expecting “…” or “…” in … on line …
Error Log hiển thị đối với phiên bản PHP < 7.0.0
Parse error: syntax error, unexpected … T_CONSTANT_ENCAPSED_STRING, expecting … in … on line …
Nguyên nhân lỗi
Bạn thiếu connector (ký tự kết nối) giữa 2 hoặc nhiều chuỗi (string) với nhau. Ví dụ:
echo "Hello world!" "<br/>"; // Lỗi
echo "Hello world!" . "<br/>"; // Đúng . là connector để nối 2 chuỗi với nhau
echo "Hello world!" $html; // Lỗi
echo "Hello world!" . $html; // Đúng
Bạn thiếu separator (ký tự phân chia) giữa các value bên trong một Indexed array. Ví dụ:
$arr = array("Apple", "Orange" "Strawberry"); // Lỗi
$arr = array("Apple", "Orange", "Strawberry"); // Đúng , là seperator giữa các value bên trong một Indexed array
Bạn thiếu connector (ký tự kết nối) giữa key và value bên trong một Associative array. Ví dụ:
$row = array("name"=>"Jack", "country" "Scotland", "Level" => 9); // Lỗi
$row = array("name"=>"Jack", "country" "Scotland", "Level" => 9); // Đúng => là connector giữa key và value bên trong một Associative array
Cách khắc phục Fix
Bước 1. Xác định vị trí câu lệnh statement chứa lỗi
Bằng thông tin hiển thị trên Error log, ta có thể dễ dàng xác định được vị trí câu lệnh (statement) chứa lỗi.
Ví dụ trường hợp theo ảnh chụp Error log như trên, câu lệnh chứa lỗi sẽ nằm ở dòng 13 của file blog_detail.php
Bước 2. Xác định và bổ sung connector hay separator mà bạn đang thiếu
Bằng việc đối chiếu statement của bạn với những nguyên nhân mà mình đã phân tích bên trên, bạn có thể dễ dàng xác định được code của mình đang thiếu connector hay separator nào. Sau đó, bạn hãy bổ sung nó cho hợp lý.