本文主要是介绍php用 WHERE 列名 IN (数组) 语句批量请求数据库(SQL Server)查询数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
a.php 文件内容:
<?php
header("Content-Type: text/html; charset=UTF-8");
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE');
/*** IN 语句请求数据库信息*///服务器名称
$serverName = ".\SQLSERVERDEMO";//数据库的信息(数据库名称、登录用户名、密码)
$connInfo = array("Database"=>"WarehouseManagementSystem", "UID"=>"admin", "PWD"=>"123456");//建立与数据库的连接
$conn = sqlsrv_connect($serverName,$connInfo);// 数组转码函数
function array_iconv($in_charset,$out_charset,$arr){return eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';'));
}$jarr = array();class Emp {public $msg = "";public $code = "";public $data = "";
}// 前端请求接口时传来的data
$data = json_decode($_POST['data']);// 拼接成('x','y','z')这种形式的字符串
$str = '';for($x = 0; $x < count($requestData); $x++)
{$str .= "'".$requestData[$x]."',";
}// 删除掉最后一个逗号','
$str = substr($str, 0, strlen($str) - 1);// 如果$str中有汉字的话,还需转码成GBK格式(这里我的数据库数据存储格式是GB2312,所以转化为GBK格式)
$str = iconv("UTF-8","GBK",$str);$e = new Emp();if ($conn) {// 拼接请求数据库的查询语句 $sql = "SELECT * FROM ProductInfo WHERE ProductNo IN (".$str.")";$stmt = sqlsrv_query( $conn, $sql);while($row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ){// 因为数据库数据存储格式是GB2312,而前端数据存储格式是UTF-8,所以这里要进行转码$row = array_iconv('GBK','UTF-8',$row);array_push($jarr,$row);}if ($stmt == true) {// 返回结果$e->msg = "查询成功!";$e->code = "success";$e->data = $jarr;echo json_encode($e);} else {// 返回结果$e->msg = "查询失败!";$e->code = "error";$e->data = null;echo json_encode($e);}} else {// 返回结果$e->msg = "数据库连接失败!";$e->code = "error";$e->data = null;echo json_encode($e);
}
前端ajax请求:
var arr = [100, 200, 300, 400, 500]$.ajax({type: 'POST',data: 'data=' + JSON.stringify(arr),// 填写要请求的php文件的地址url: 'http://localhost:8080/a.php',dataType: 'json',contentType: 'application/x-www-form-urlencoded; charset=utf-8',success: function(data) {console.log(data)},error: function(data) {console.log('错误')}})
这样就可以做到接口传递data为数组,然后sql语句一次请求查询完所有数据返回给前端。
这篇关于php用 WHERE 列名 IN (数组) 语句批量请求数据库(SQL Server)查询数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!