通过ajax将不同数据类型的参数数组传递给PHP

问题描述

我正在使用 js、PHPMysqL 编写一个小型 CRUD 接口。为了避免 sql 注入,我的 javascript 分别发布了一个准备好的 sql 语句 form._source一个包含参数 form._param

的数组
  _post = {action:'read',source:form._source};
  if (form._param !== null) _post['param']=form._param;
  $.post("/ajax/crud.PHP",_post,function(result){
    if (!result.error) {
      form._record = result.data;
      form._totrec = result.data.length;
      form.gotoRecord(setrec);
    }
    else {}
  },"json");

参数数组可以包含不同的数据类型,例如:

form._source = "SELECT * FROM z_country WHERE continent_code = ? AND pop > ?"
form._param = ["E",50]; 

PHP 中,param 数组被转换为 $_POST 变量中的字符串,var_dump($_POST); 给了我:

array(3) {
  ["action"]=> string(4) "read"
  ["source"]=> string(56) "SELECT * FROM z_country WHERE continent_code = ? LIMIT ?"
  ["param"]=> array(2) {
            [0]=> string(1) "E"
            [1]=> string(2) "50"
  }
}

那么,避免丢失第二个参数实际上是数字(整数)而不是字符串的信息的最佳策略是什么。我知道 ajax 和 PHP 通过字符串“通信”,但我需要 MysqL 对参数进行数字比较,而不是字母数字比较。

  • 我当然可以让 PHP 分析 $_POST 的内容,但这可能会导致错误,例如,如果我想要将电话号码解释为字符串。
  • 当 ajax 调用将混合数组作为参数之一时,有没有办法告诉 $_POST 如何解释其内容
  • 我的另一个想法是在 javascript 中准备“param-type”字符串(上例中的“si”)并将其与 ajax 请求一起发送

对于标准情况,一切都有些不令人满意。请问有什么建议吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)