大佬教程收集整理的这篇文章主要介绍了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,请注明来意。