PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-foreach循环根据当前条件将错误的str值分配给错误var大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我具有检查用户尝试添加MysqL DB的数据条目是否存在的功能.尽管我不允许DB表中的元组允许插入重复项,但是此功能仅是为了用户的利益,因此他们以易于理解的错误消息知道为什么拒绝输入数据.

因此,要检查的两个数字都是唯一的,在示例中列为ourNum => $ourNum和venNum => $venNum.问题是,当函数检查第一个数组元素(ourNum)时,由于mysqli_query成功而失败,结果$errMsg显示已经存在的是$venNum而不是$ourNum.现在$venNum实际上可能实际上也应该被证明是重复的,因为$ourNum只能与有效的$venNum一起存在于数据库中,但是使用的信息是错误的信息,并且是完全错误的.

function eqpt_num_dupe_check( $ourNum, $venNum, &$errMsg ){

  // create associative array to hold ourNum => $ourNum and venNum => $venNum
  $eqptNumArr = array(
    'ourNum' => $ourNum,
    'venNum' => $venNum );

  // check for duplicate eqptNum entry
  foreach ( $eqptNumArr as $eqpt => $num ) {
    $sqlQ = "SELECT * FROM table WHERE $eqpt = $num";

    if ( $rs = MysqLi_query( $dbcon, $sqlQ ) ) { // if $rs is assigned then eqptNum already exists in DB, so display errMsg for user
      $errMsg = 'Data entry refused: ' . $eqpt . ': ' . $num . ' already exists in database.';
    }
  }
}

在向用户显示一个元素的数据重复性$errMsg之前,似乎foreach已经移到了数组的第二个元素上.

解决方法:

您需要在分配$errMsg之后的if条件中添加一个中断,以便在发现重复数据时不再进行进一步的处理.

if ( $rs = MysqLi_query( $dbcon, $sqlQ ) ) { // if $rs is assigned then eqptNum already exists in DB, so display errMsg for user
    $errMsg = 'Data entry refused: ' . $eqpt . ': ' . $num . ' already exists in database.';
    break;
}

在不中断的情况下,foreach会轻松地继续加载后续的数组元素,并对每个数组进行处理,直到没有更多元素要加载为止.当发现重复数据时,中断将精确地停止此处理,因此将为用户显示正确的$errMsg.如果$venNum也被证明是重复的,则只有当用户输入$ourNum的唯一值时,才能正确检测到它.

如果(!$rs),则通过MysqLi_query加载下一个数组元素,以检查其可能的重复性.

大佬总结

以上是大佬教程为你收集整理的php-foreach循环根据当前条件将错误的str值分配给错误var全部内容,希望文章能够帮你解决php-foreach循环根据当前条件将错误的str值分配给错误var所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: