PHP代码执行顺序

Posted

技术标签:

【中文标题】PHP代码执行顺序【英文标题】:PHP code execution sequence 【发布时间】:2012-04-21 07:49:32 【问题描述】:

我正在尝试执行一些 php 代码行,但似乎没有按要求的顺序执行。这是一个代码sn-p:-

if( !empty($_POST['val']) )
               
                    $val = Get_Val($sid, $_POST['val'], $lnk);
                    if($val)
                     
                        echo "<br />Here Value : " . $val;
                    
                    else
                    
                        echo "Invalid Value.";
                    
              

当我在函数 Get_Val() 中返回之前回显该值时,它会为某些有效参数集显示一个正数,这意味着 If 条件为真,但是当我执行代码时 Else 部分正在执行。尽管输出按顺序显示,但它们并不一致。我希望我已经把问题说清楚了。 感谢您提供任何帮助。谢谢! 这是 Get_Val() 函数:-

函数 Get_Val($sid, $a, $link) //检查名称是否已经存在于表中 $query = "SELECT val FROM store WHERE name = \"" . $a . "\""; //val在sql中自动递增 $result = mysql_query( $query ,$link) or die( mysql_error()); 如果($结果) $count = mysql_num_rows($result); if( $count == 0 ) //插入名称和返回值 $query_x = "INSERT INTO store(name) VALUES('" . $a . "')"; $result = mysql_query( $query_x ,$link) 或死(mysql_error()); if($result)//如果插入了新名称则返回'val' Get_Val($sid, $a,$link); 别的 $row = mysql_fetch_assoc($result); echo "Get_Val 中的 Val:"。 $row['val']; 返回 $row['val']; 别的 echo "发生意外错误...!!!"; 退出(0);

【问题讨论】:

上传Get_Val()的代码 也可以试试if(isset($val))。你确定Get_Val() 正在返回一个值吗? 确保你清理了 $_POST['val'],否则,sql 注入是肯定的 【参考方案1】:

这是怎么回事:

if( $count  Val in Get_Val : " . $row['val'];
    return $row['val'];

您确定 $_POST['val'] 是存储在数据库中的有效值吗?

【讨论】:

我已经更正了,第一次发错了。 在插入不应该使用递归的新值后,您正在浪费 cpu 周期和无用的 sql 查询,只需返回最后插入的 id 这是一种情况,因为我不是手动插入的,它是自动递增的,我只是插入'name','val'会自动更新。即使我试图获取表中的最后一个“val”,它也需要另一个 SQL 查询。因此,无法删除查询。请帮助我在不使用递归的情况下获取新插入的“val”。如果我删除递归并改用另一个查询会怎样? 我们mysql_insert_id(),它会返回新增加的id 让我试试,感谢到目前为止的帮助。 :-)【参考方案2】:

如果 $count == 0,Get_Val 不返回值。在递归调用之前添加 return 语句。像这样:

...
if( $count == 0 ) //insert name and the return val

    $query_x = "INSERT INTO store(name) VALUES('" . $a . "')";
    $result = mysql_query( $query_x ,$link ) or die( mysql_error());
    if($result)//If new name inserted then return the 'val'
    
       return Get_Val($sid, $a,$link);
    

...

【讨论】:

以上是关于PHP代码执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

php 流程控制

浅谈PHP代码执行的大致流程(opcode)

PHP没有按顺序执行

你如何让javascript代码执行*按顺序*

SpringBoot 项目启动后执行代码

3.php流程控制