我正在做一些事情,用户有一个本地数据库,当他点击检查新书时,它会从他的本地数据库中获取所有 IDS(固定)并创建由逗号分隔的字符串 (1,2,3,4,5)然后对我的服务器执行 GET
www.myserver.com/getNews?ids=1,2,4,10
在服务器端我这样做:
1) 获取最后一个 ID(固定的)并设置在一个名为 $total
的变量中
2) 获取用户发送的 IDS 并使用 .explode(",") 创建一个数组
3) 获取缺失值 $missing = array_diff(range(1,$total),$ids);
获取最大 id 并获取 $total
和 $ids
下面是我认为比较重的部分:
对于每个 $missing
值,我都进行选择并构建一个数组以显示为 json
foreach($missing as $m) {
$sql = "SELECT * FROM `books` WHERE id='$m'";
while($row =mysqli_fetch_assoc($result))
{
$emparray[] = array_map('utf8_encode', $row);
}
}
echo json_encode($emparray);
只有这一种方法还是有其他更轻的功能?
最佳答案
你可以试试这个。用逗号分解数组,然后在查询中使用 NOT IN
条件来选择您想要的所有书籍。
$strMissing = implode(',', $missing);
$sql = "SELECT * FROM `books` WHERE id NOT IN (".$strMissing.")";
关于php - 从 VALUES NOT EQUALS = array 的数据库中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33672277/