You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2014与PHP实现特定前缀NPA数据查询的方法

没问题,我来帮你搞定这个需求!首先咱们先从SQL Server的查询语句入手,然后再结合PHP代码实现,同时还会注意避免SQL注入的安全问题~

1. SQL Server 查询语句写法

你的目标是获取前6位为010101、010102、010103的NPA数据,这里提供两种常用且高效的写法:

方法一:使用LEFT函数匹配前缀

这种方法直接截取NPA的前6位,判断是否在目标前缀列表中,可读性很强:

SELECT NPA, nama
FROM 你的数据表名 -- 记得替换成实际的表名
WHERE LEFT(NPA, 6) IN ('010101', '010102', '010103');

方法二:使用LIKE模糊匹配

如果NPA字段建有合适的索引,这种写法在性能上可能更有优势:

SELECT NPA, nama
FROM 你的数据表名
WHERE NPA LIKE '010101%'
   OR NPA LIKE '010102%'
   OR NPA LIKE '010103%';
2. 结合PHP实现(安全版,避免SQL注入)

你已经定义了$npa1 = 01、$npa2 = 02、$npa3 = 03,我们可以用这些变量动态生成目标前缀,同时用预处理语句保证代码安全。这里以SQL Server官方推荐的SQLSRV扩展为例:

<?php
// 数据库连接参数
$serverName = "你的服务器地址";
$connectionInfo = array(
    "Database" => "你的数据库名",
    "UID" => "数据库用户名",
    "PWD" => "数据库密码"
);

// 建立数据库连接
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false) {
    die(print_r(sqlsrv_errors(), true));
}

// 注意:变量用字符串类型存储,避免前导零丢失
$npa1 = '01';
$npa2 = '02';
$npa3 = '03';

// 生成目标前缀数组
$targetPrefixes = array(
    '0101' . $npa1,
    '0101' . $npa2,
    '0101' . $npa3
);

// 构建预处理语句的占位符
$placeholders = implode(',', array_fill(0, count($targetPrefixes), '?'));
$sql = "SELECT NPA, nama FROM 你的数据表名 WHERE LEFT(NPA, 6) IN ($placeholders)";

// 准备预处理语句
$stmt = sqlsrv_prepare($conn, $sql, $targetPrefixes);
if ($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}

// 执行查询
if (sqlsrv_execute($stmt) === false) {
    die(print_r(sqlsrv_errors(), true));
}

// 遍历并输出结果
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    echo "NPA: " . $row['NPA'] . " | Nama: " . $row['nama'] . "<br>";
}

// 释放资源并关闭连接
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>

关键注意点:

  • 一定要用字符串类型存储$npa1这类变量,否则数字形式的01会自动转为1,导致前缀拼接错误。
  • 预处理语句能有效防范SQL注入,绝对不要直接把变量拼接到SQL语句里。
  • 如果你的PHP环境用PDO连接SQL Server,核心逻辑类似,同样需要通过绑定参数实现安全查询。

内容的提问来源于stack exchange,提问作者f4ray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:25:22