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

Javascript 通过ajax将不同数据类型的参数数组传递给PHP,javascript,php,mysql,parameter-passing,prepared-statement,Javascript,Php,Mysql,Parameter Passing,Prepared Statement,我正在用js、PHP和MYSQL编程一个小型CRUD接口。为了避免SQL注入,我的javascript分别发布了一个准备好的SQL语句form.\u source和一个包含参数form.\u param _post = {action:'read', source:form._source}; if (form._param !== null) _post['param']=form._param; $.post("/ajax/crud.php",_post, f

我正在用js、PHP和MYSQL编程一个小型CRUD接口。为了避免SQL注入,我的javascript分别发布了一个准备好的SQL语句
form.\u source
和一个包含参数
form.\u 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
数组被转换为$\u POST变量($\u 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调用将混合数组作为参数之一时,是否有方法告诉$\u POST如何解释其内容
  • 我的另一个想法是用javascript编写“param type”字符串(在上面的示例中为“si”),并将其与ajax请求一起发送

对于标准情况来说,这一切都有点不令人满意。有什么建议吗?

您必须准备该语句,因此必须将值绑定到参数,这是应用类型的一个地方,尽管大多数类型将由数据库完成,因为它知道列的类型。我感觉你在试图解决一个你根本没有的问题是的,我理解。参数数组通过ajax通过$\u POST从js传递到php。在php中,我准备语句并绑定参数。问题是js在传递给php的参数数组中具有正确的类型,但在php中它们都显示为字符串。