单个代码行中的header()+ die()的多个实例

red*_*urn 7 php redirect header die

我正在尝试操作PHP脚本,以便重定向到特定的URL,而不是给我一个MySQL错误.所以我离开了......

$qs = mysql_query("SELECT url FROM $table WHERE `id` = $gid;") or die('MySQL error: '.mysql_error());
Run Code Online (Sandbox Code Playgroud)

......对此:

$qs = mysql_query("SELECT url FROM $table WHERE `id` = $gid;") or header("Location: http://www.example.com");
Run Code Online (Sandbox Code Playgroud)

哪个有效,但有两件事与我有关.首先,它默认为302重定向,我更喜欢301重定向.其次,我担心通过从这一行删除die(),重定向后脚本没有正确退出.

现在,我已经在这里完成了一些功课,但是我无法弄清楚是否可以在这一行代码中将die()与header()的两个实例结合起来(即不改变这条特定行的内容) ).

Nik*_*kiC 4

除了“你不应该这样做”的注释之外,你还可以这样做:

$qs = mysql_query(...) or (header(...) xor die);
Run Code Online (Sandbox Code Playgroud)

解释:xor就像一样or,区别在于保证两边的表达式都被求值并且不被短路。(好吧,xor与 不同or,但就这个答案而言,这并不重要。)