【问题标题】:Mystery code in PHPPHP中的神秘代码
【发布时间】:2012-11-10 15:17:14
【问题描述】:

这段代码是在别人写的脚本中发现的,我被要求编辑。它似乎没有做任何事情..我想知道它到底为什么在那里,如果我删除它,世界上的某个地方是否会出现严重错误..

我错过了什么吗?

//begin mystery code - i have no idea what this chunk of code is doing..
$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$i++;
}
}
//end mystery code

$result 未在其他任何地方引用..

【问题讨论】:

  • 基本上它所做的是检查是否有该结果的结果,并且它做得更多,它通过循环运行。但是,它似乎没有打印/回显或执行除此之外的任何内容。它只是做 i++,这只会增加 i 值。所以是的,如果我看这个,它只是假鳕鱼,在普通意义上。不过我得说,我必须查看完整的代码才能将其放入上下文中。
  • @Dorvalla 我什至没有想到这一点,现在你提到它,我确实在更远的地方找到了for ($j=0;$j<$i;$j++) {。干杯。

标签: php sql loops while-loop


【解决方案1】:

它正在计算数据库表$table中的列数,并将值放入$i

大概,$i 是后来用的?

【讨论】:

    【解决方案2】:

    它做了两件事:

    1. 每行增加$i
    2. 将每一行存储到$row,最后将false 存储到其中。

    所以最后它设置:

    • $i 到行数。
    • $rowfalse

    但不要对垃圾代码感到好奇。改为改进它:

    $i   = mysql_num_rows($result);
    $row = false;
    

    还封装mysql_* 调用,以便您以后可以轻松替换它们。如果查询失败,您还应该处理错误情况。

    【讨论】:

      【解决方案3】:

      它似乎唯一要做的就是计算 $i 中的列数。如果脚本中的任何地方都没有使用 $i,您可以删除此代码。

      如果没有代码可以被删除,还要在脚本中查找 $row 和 $result 变量的使用情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-28
        • 2021-12-11
        • 1970-01-01
        • 2019-07-05
        • 2013-07-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多