I'm writing a php app to access a MySQL database, and on a tutorial, it says something of the form
mysql_connect($host, $user, $pass) or die("could not connect");
How does PHP know that the function failed so that it runs the die part? I guess I'm asking how the "or" part of it works. I don't think I've seen it before.
If the first statement returns
true, then the entire statement must be
true therefore the second part is never executed.
$x = 5; true or $x++; echo $x; // 5 false or $x++; echo $x; // 6
Therefore, if your query is unsuccessful, it will evaluate the
die() statement and end the script.
or works like C's
|| (which incidentally is also supported by PHP -
or just looks nicer and has different operator precedence - see this page).
It's known as a short-circuit operator because it will skip any evaluations once it has enough information to decide the final value.
In your example, if
mysql_connect() returns TRUE, then PHP already knows that the whole statement will evaluate to TRUE no matter what
die() evalutes to, and hence
die() isn't evaluated.
mysql_connect() returns FALSE, PHP doesn't know whether the whole statement will evaluate to TRUE or FALSE so it goes on and tries to evalute
die() - ending the script in the process.
It's just a nice trick that takes advantage of the way