繁体   English   中英

匹配数组中的数字并使用 PHP 显示 SQL 结果中的任何不匹配项

[英]match numbers from array and display any mismatches from SQL result using PHP

以下代码显示匹配的结果。 我想做一个小改动,让它变成 function,如下所示。

  1. 如果数组中的所有数字都匹配,它应该回显“成功”
  2. 如果至少有一个号码无效/或未找到匹配项,它应回显“不匹配”并显示无效/不匹配的号码。

简而言之,整个数组应该匹配,否则它应该显示哪个数组值不匹配。 我试过了,但找不到合适的方法。

$arr=range(990,997);
$count="5";
// Attempt select query execution
$sql = 'SELECT * 
            FROM tbl_numbers_stock 
            WHERE lot_stock > '.$count.' 
            AND lot_number IN (' . implode( ',', $arr ) . ' );';

if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        while($row = mysqli_fetch_array($result)){
            echo "<td>" . $row['lot_number'] . "</td>"; echo ", ";
        };

        if(mysqli_num_rows($result) == count($arr)) {
            echo 'all true';
        } else {
            echo 'some false';
        }

        // Close result set
        mysqli_free_result($result);
    } else{
        echo "No records matching your query were found.";
    }
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
 
// Close connection
mysqli_close($link);
?>

我尝试添加

$resultt = array_diff($result,$arr);
print_r($resultt);

但它什么也没显示。 SQl 表只包含 990,991 和 992。所以print_r($resultt); 应该显示 rest 从 993 到 997 的数字,但它什么都不做。

您必须为匹配条目定义一个附加变量($lot_number_found),将其填充到 while 循环中并将其与 $arr 进行比较:

<?php
$arr=range(990,997);
$count="5";
$lot_number_found = array();
// Attempt select query execution
$sql = 'SELECT * FROM tbl_numbers_stock WHERE lot_stock > '.$count.' AND lot_number IN (' . implode( ',', $arr ) . ' );';

if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        while($row = mysqli_fetch_array($result)){
            $lot_number_found[] =  $row['lot_number'];
        };
        $resultt = array_diff($arr, $lot_number_found);
        if(count($resultt) === 0) {
            echo 'success';
        } else {
            echo 'some false: '.implode( ',', $resultt ) ;
        }

        // Close result set
        mysqli_free_result($result);
    } else{
        echo "No records matching your query were found.";
    }
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

// Close connection
mysqli_close($link);
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM