微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决通过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 举报,一经查实,本站将立刻删除。