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

如何将AngularJS传递的SQL指定值获取到PHP文件中并实现无WHERE动态筛选

方案1:直接解析传入的SQL提取目标值

如果必须从AngularJS传递的SQL语句中取值,可以用正则动态匹配目标字段的取值,不需要用到WHERE子句,适配简单结构的SQL场景:

// 接收AngularJS传递的SQL语句,这里以POST请求为例
$inputSql = file_get_contents('php://input');
// 配置你要提取的目标字段,可动态修改
$targetField = 'orderAmt';
// 正则匹配字段对应的值,兼容带单引号、双引号、无引号的数字取值
preg_match("/{$targetField}\s*=\s*['\"]?([^'\"]+)['\"]?/i", $inputSql, $matches);
$extractedValue = $matches[1] ?? '';

// 代入你的业务数组
$data = [
    'merchantId'        => 'M100003360', // 替换为实际商户ID
    'qrCode'            => '968566222112615382',
    'curType'           => 'RM',
    'notifyURL'         => 'https://google.com/',
    'merOrderNo'        => uniqid(),
    'goodsName'         => '',
    'orderAmt'          => $extractedValue,
    'remark'            => '',
    'transactionType'   => '1',
];

$data = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

注意:该方案仅适合结构固定的简单SQL,若存在子查询、同名字段、复杂计算逻辑可能出现匹配偏差。

方案2:更稳妥的结构化传参实现动态筛选(推荐)

直接传递SQL到后端存在极高的SQL注入风险,更推荐调整传参逻辑,让AngularJS端传递结构化的筛选参数数组,PHP直接取对应值即可,天然支持动态筛选:

  1. AngularJS端请求示例:
$http.post('你的PHP接口地址', {
  // 所有筛选参数封装成对象传递,可动态增减字段
  filterParams: {
    merchantId: 'M100003360',
    orderAmt: '99.99',
    goodsName: '测试商品'
  }
})
  1. PHP端取值示例:
$inputData = json_decode(file_get_contents('php://input'), true);
$filterParams = $inputData['filterParams'] ?? [];
// 动态提取任意需要的字段即可
$orderAmt = $filterParams['orderAmt'] ?? '';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:36:04