Better understanding of error messages can significantly reduce the time spent identifying and correcting what is wrong. Therefore, in this article, I will try to clarify the many different types of PHP error messages and how to correctly understand the meaning of various error messages during the development process.
When compiling a PHP script, the PHP compiler does its best to report the first problem it encounters. This creates a problem: PHP can only recognize the error when it occurs (this problem is described in detail later in this article). It is for this reason that the compiler points out that the line in error may appear to be syntactically correct on the surface, or it may be a line that does not exist at all!
The content described in this article has nothing to do with the version of PHP you are using, because the various errors described in this article are not limited to specific errors in a particular version. In addition, we assume that you are a junior or intermediate programmer and have been engaged in programming for half a year or a year.
How the Compiler Works
To understand why the compiler reports an error on a certain line, you must first understand the mechanism by which the compiler parses PHP code. I'm not going to go into detail about this in this article, but we will discuss some simple concepts that are more likely to lead to errors.
Variable declaration
If you declare a variable in a statement, the specific method is as follows:
$variable = 'value';
The compiler first evaluates the right half of the statement (that is, everything to the right of the equal sign). In some programming books, this is represented as the RHS (right half) of the statement. It is this part of the statement that often causes errors. If you use incorrect syntax, you will get a parsing error.
Parse
error: Parse error, unexpected T_WHILE in c:program filesapache groupapachehtdocsscript.PHP on line 19.
Parse errors keep appearing one after another every time the previous error is determined. Because PHP stops executing the script after the first parsing error, debugging and correcting this series of errors can often be particularly tiresome.
Also, parsing errors have very little information, with almost no reporting of the line number where the error occurred. The specific reason is that when an error occurs, the compiler determines that the syntax of several lines should appear to be valid until it encounters invalid syntax. The most likely case is that predefined words are used in the expression, for example; while = 10 ; // Bad ? while is a predefined word and cannot be assigned to a value.
Predefined words include while, function, etc. If PHP uses uses to evaluate your code. You cannot use these predefined words to name variables. And if you insist on doing this, PHP will report more errors, which you can't stand.
Regarding this issue, the following example may help you. Please consult and read the PHP code shown below:
<?PHP
$b = "somevalue"
if($b == "somevalue"){
print "Hello world!";
}
?>
The error is on the "$b=" line (missing semicolon at the end of the statement), so the error should be "Parse error: missing semicolon on line 3" right? Rather than judging by the parser:
Parse error: parse error, unexpected T_IF in c:program filesapache
groupapachehtdocsereg2.PHP on line 4
In line 4, the syntax of the if() statement is correct. So, what is confusing the compiler? The clue is the "unexpected T_IF" part. When an "unexpected T_???" error occurs, it means: the compiler found that a predefined word appears in a position where it should not appear. T_IF represents if(), T_WHILE represents while(), T_FOR represents for(), etc.
Thankfully, the causes of some errors are also simple:
Statements are not terminated with a semicolon (;), such as in the example above. Quotation marks are missing in the string.
Some Other Common Mistakes
The most common mistake I see is when not closing a function or a loop with a brace ( } ). This is probably the most common and annoying mistake. The specific code is as follows:
function UselessFunction() {
for($i < 0; $i < 10; $i++){
}
The following error will be generated:
Parse error: parse error, unexpected $ in c:program filesapache
groupapachehtdocsereg2.PHP on line 9
Since the function UselessFunction does not end with a brace (}), the PHP compiler keeps looking for the closing brace until it reaches the end of the file. Because the compiler doesn't find a matching brace, it reports an end-of-file error.
If the code hierarchy is correctly reflected, error messages will become very obvious. If the hierarchical structure of the code is not marked, it will be almost impossible to find out what has been forgotten in the end. So, remember, be sure to indicate the hierarchy of your code. The Tab key makes this easy. It will also be easier for subsequent developers to grasp the code framework and modify it.
MySQL Error
Another extremely annoying error message is the most common MySQL error, which often causes headaches for new PHP users: Warning: Supplied argument is not a valid MySQL result resource in...
The erroneous line reported above might be:
while($row = MySQL_fetch_array($result)) {
The parameter $result is not a valid resource. In English it means that mysql_fetch_array cannot be processed because the query failed. The syntax of either query is invalid (you should copy-paste the query into the MySQL console reference to test), or the connection to the database failed (in which case you should double-check the username, password, etc.).
Preventing Errors
As a first step, smart coders can take the following steps to eliminate the following errors:
· Don't think about adding a semicolon at the end of every statement - this should become a habit.
· Always indicate the hierarchy of your code whenever possible. This will enable you to see if you forgot to add braces at places like if calls or at the end of functions.
· Please use an editor with syntax highlighting (such as HTML-Kit). With the help of such an editor, you can determine if you forgot to add a quote, if you are missing a semicolon, etc.
Conclusion
In this article, we have a certain understanding of some seemingly meaningless errors that the PHP compiler can report. We need to apply what we learn to how to avoid mistakes and how to correct them when they occur. Debugging is one of the most important parts of a developer's job. Improving debugging efficiency can greatly speed up the progress of the entire work and shorten the time it takes to complete a project. It can also significantly reduce the mental pressure caused by code failure.
No matter how careful we are when writing programs, mistakes are inevitable. These errors usually confuse the PHP compiler. Compiler error messages are not only useless but often frustrating if developers don't understand what they mean.