【问题标题】:MySql insert after validationMySql 验证后插入
【发布时间】:2016-10-16 20:56:55
【问题描述】:

如果没有发现错误,我如何添加 MySQL 插入? 这是我的代码:

foreach($data as $key => $value){

    try{
        $rules[$key]->assert($value);
    } catch (\InvalidArgumentException $e) {
        $errors = $e->findMessages([
        'email' => 'Email must be a valid email address.',
        'equals' => 'Both passwords must match.']);
        echo $e->getFullMessage().'<br />';
    }

}

我尝试在 catch 之后添加代码,但由于它在循环中,所以执行了多次。

将代码放在循环之外会使其始终执行。

【问题讨论】:

  • 如果在catch块之后没有错误,只需编写您希望php随后执行的任何其他代码。
  • @Shadow 我试过了,但是因为它在一个循环中,它会执行多次。
  • 然后将代码放在循环之后。

标签: php try-catch


【解决方案1】:

如果没有抛出错误,代码会继续被解释。所以你应该在catch之后添加你想要的代码,就像这样:

foreach($data as $key => $value){

    try{
        $rules[$key]->assert($value);
    } catch (\InvalidArgumentException $e) {
        $errors = $e->findMessages([
        'email' => 'Email must be a valid email address.',
        'equals' => 'Both passwords must match.']);
        echo $e->getFullMessage().'<br />';
    }

    // your code here

}

【讨论】:

  • 感谢您的回答,但由于它位于 foreach 内部,因此后续代码执行的次数在这种情况下被传递了 4 次。如何避免?
  • 您可以使用 break 中断 foreach - break 结束当前 for、foreach、while、do-while 或 switch 结构的执行:php.net/manual/en/control-structures.break.php
  • 即使有错误导致InvalidArgumentException 这个代码仍然会被执行。
  • 投反对票?严重地?这个网站越来越荒谬了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 2014-09-11
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多