Javascript 通过ajax将不同数据类型的参数数组传递给PHP
我正在用js、PHP和MYSQL编程一个小型CRUD接口。为了避免SQL注入,我的javascript分别发布了一个准备好的SQL语句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
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中它们都显示为字符串。