任何人都可以帮我弄清楚下面给出的php代码。
function do_the_query($db, $query)
{
$result = mysql_db_query($db, $query) or print("$query<BR>" . "<B>" . mysql_errno() . ": " . mysql_error() . "</B><BR>\r\n<BR>\r\n");
return $result;
}
/* funzione frontend per generare numeri pseudo-casuali */
function random($max)
{
srand((double)microtime() * 1000000);
return rand(1, $max);
}
?>
答案 0 :(得分:1)
do_the_query
执行$query
参数中针对$db
参数中MySQL数据库连接资源的SQL查询。如果有错误,它将显示查询和相关的错误信息。
random
将返回介于1和传递给$max
的值之间的伪随机数。
(如果不明显,这两个函数没有任何关联。)
答案 1 :(得分:1)
第一个函数(do_the_query()
)对于一个似乎采用数据库句柄并进行查询的函数来说是一个令人震惊的名称,如果失败则向黑客显示有用的信息。
如果您想知道or
是如何工作的,那么它的工作原理是因为它利用了短路评估。想想左手边。如果查询返回 truthy ,则OR
会得到满足并且可以跳过右侧。如果它返回 falsy ,那么PHP也需要检查右侧,在我们的例子中是print()
。
第二个函数(random()
)返回1和参数$max
之间的psuedo-random number。它使用当前microtime()
强制转换随机播种,然后乘以1000000
。
我不会说这两个函数是PHP代码的好例子。查询应该被命名为db类或类似的。它也不应该回显查询和错误信息(除非在严格的开发环境中)。它应该记录该信息,并且网站应该尽可能优雅地恢复。
random()
功能也非常不灵活。它在PHP 4.2之后不需要时使用srand()
(它现在自动完成)。
答案 2 :(得分:1)
我猜想让你感到困惑的是:
$result = mysql_db_query($db, $query) or print("$query<BR>" . "<B>" . mysql_errno() . ": " . mysql_error() . "</B><BR>\r\n<BR>\r\n");
请参阅,PHP使用short-circuit evaluation的逻辑运算符,or
表示只有左侧返回false才会计算表达式的右侧(打印错误消息)。 / p>
答案 3 :(得分:0)
第一个函数执行mysql查询,如“select * from table”...并返回结果:
function do_the_query($db, $query)
{
$result = mysql_db_query($db, $query) or print("$query<BR>" . "<B>" . mysql_errno() . ": " . mysql_error() . "</B><BR>\r\n<BR>\r\n");
return $result;
}
第二个函数根据microtime内部函数生成随机数并返回结果:
function random($max)
{
srand((double)microtime() * 1000000);
return rand(1, $max);
}