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

猜你喜欢

转载自blog.csdn.net/u011295864/article/details/84138102