【问题标题】:locking some parts of a php file for guaranteed execution锁定 php 文件的某些部分以保证执行
【发布时间】:2018-07-16 15:32:51
【问题描述】:

假设我有一个名为 test.php 的 php 文件。 test.php的部分内容如下:

if($val==4)
{
        $sql = "UPDATE `$tbln` SET noc='".substr($targetPath,3)."' WHERE $pri=$uploadID;";
        $result=mysqli_query($db,$sql);
        $sql="DELETE FROM `$tbln` WHERE noc IS NULL;";
        mysqli_query($db,$sql);
}

elseif($val==5)
{
        $sql = "UPDATE `$tbln` SET circular='".substr($targetPath,3)."' WHERE $pri=$uploadID;";
        $result=mysqli_query($db,$sql);
        $sql="DELETE FROM `$tbln` WHERE circular IS NULL;";
        mysqli_query($db,$sql);
}

test.php 经常被另一个 php 文件调用。有什么办法可以锁定 if 块或 elseif 块,这样 test.php 只能在上一次调用的 if/elseif 块完成后执行?

【问题讨论】:

  • 不是你的问题,但你应该参数化你的查询。
  • @user3783243 取决于这些变量中的任何一个是否来自用户输入。不必要的准备是不必要的。另外,您不能像他那样参数化表或字段名称。
  • "有没有什么办法可以锁定if块或者elseif块,使得test.php只能在上一次调用的if/elseif块完成后才能执行?"我> ...为什么?数据库行在更新时无论如何都应该锁定。

标签: php mysql concurrency


【解决方案1】:

不确定我是否正确理解了您的问题,但我建议您只需添加一个

else{ exit(); }

停止您的 PHP 脚本。 您还可以按照PHP Manual 中的说明添加错误代码。

【讨论】:

    猜你喜欢
    • 2023-01-03
    • 2023-03-24
    • 2017-12-24
    • 2011-09-26
    • 2015-07-01
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    相关资源
    最近更新 更多