[英]match numbers from array and display any mismatches from SQL result using PHP
以下代码显示匹配的结果。 我想做一个小改动,让它变成 function,如下所示。
简而言之,整个数组应该匹配,否则它应该显示哪个数组值不匹配。 我试过了,但找不到合适的方法。
$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.