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语句一次请求查询完所有数据返回给前端。