【问题标题】:Run multiple SQL UPDATE statements on submit [duplicate]在提交时运行多个 SQL UPDATE 语句 [重复]
【发布时间】:2016-05-08 11:04:12
【问题描述】:

我有几个更新语句需要在单击提交时运行。我可以运行一次更新,但我正在努力弄清楚如何在刷新页面之前运行所有这些更新。这是我尝试过的方法,但在关闭连接时出现错误,在运行单个语句时没有发生。

if ($conn->query($usqlMC)  == True) {
if ($conn->query($usqlSCn)  == True) {
    if ($conn->query($usqlSCv)  == True) {
        if ($conn->query($usqlTn)  == True) {
            if ($conn->query($usqlTurl)  == True) {
                if ($conn->query($usqlTv)  == True) {
                    header("location: http://localhost/phpkiosk/mc1.php");
                } 
            }
        }
    }
}
}

我确信这是完全错误的,因此非常感谢任何有关如何解决此问题的建议。谢谢!!!

添加错误消息

解析错误:语法错误,第 1196 行 C:\wamp2\www\phpKiosk\mc1.php 中的文件意外结束

我再次运行时没有收到错误:

if ($conn->query($usqlMC)  == True) {
    header("location: http://localhost/phpkiosk/mc1.php");
}

工作解决方案

使用 Chris85 的建议,我能够让它工作:

if ($conn->query($usqlMC) === TRUE && 
   $conn->query($usqlSCn) ===TRUE &&
   $conn->query($usqlSCv) ===TRUE &&
   $conn->query($usqlTn) ===TRUE &&
   $conn->query($usqlTurl) ===TRUE &&
   $conn->query($usqlTv) ===TRUE) {
   header("location: http://localhost/phpkiosk/mc1.php");
   } 
}

【问题讨论】:

  • 错误是什么?您可以在一个 if 和 &&s 中拥有所有这些条件。
  • @chris85 我已更新我的问题以包含错误消息
  • 该错误通常意味着其中一个控制块未关闭。那是你的确切代码吗?在这里,让它变得更简单; if ($conn->query($usqlMC) == True && $conn->query($usqlSCn) == True && $conn->query($usqlSCv) == True && $conn->query($usqlTn) == True && $conn->query($usqlTurl) == True && $conn->query($usqlTv) == True) {.
  • 在所有查询执行时重定向,如果需要,则不能像那样使用你必须使用 &&
  • 如果你更新了我的代码,那么问题是另一个控制块没有被关闭。行号与此错误无关,因为这是文件结束的地方,它不知道您忘记关闭什么。

标签: php mysql sql mysqli sql-update


【解决方案1】:

除非您需要单独检查,否则将所有条件保存在一个 if 中会更容易,这也简化了控制块的打开和关闭。

所以这个:

if ($conn->query($usqlMC)  == True &&  
    $conn->query($usqlSCn)  == True && 
    $conn->query($usqlSCv)  == True && 
    $conn->query($usqlTn)  == True && 
    $conn->query($usqlTurl)  == True && 
    $conn->query($usqlTv)  == True) {
          header("location: http://localhost/phpkiosk/mc1.php");
}

应该为您执行相同的操作,但只需要一个控制块。

还有

文件意外结束

错误永远不要相信行号。那只是文件结束的地方,而不是错误所在的地方。 PHP 无法知道应该在哪里关闭块。

例如:

<?php
if (1==1) {
echo 'this is true';
echo 'I also want to do this';
echo 'I meant to close here';
echo 'code done';

会在第 6 行抛出错误,但错误实际上在第 4/5 行,我未能关闭 if。

【讨论】:

  • @craig-howell 接受这个答案,否则人们会认为这不是关闭
  • 复选框为绿色,但在我搜索时未显示为已回答...
  • @CraigHowell 您的页面可能已被缓存,显示为我已回答。
猜你喜欢
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 2020-02-09
  • 2020-04-12
相关资源
最近更新 更多