繁体   English   中英

与%融合的字符串的第一个字符

[英]First character of a string fusionning with a %

因此,我将带有javascript的字符串发送到php页面:

if(cp.value!=''){
    s+=cp.name +" LIKE '%"+ cp.value +"%'";
    console.log(s);

    if(sec.value!=''){
        s+=" AND "+sec.name+" LIKE '%"+ sec.value +"%'";
        console.log(s);

    }
}
else{
    if(sec.value!=''){disappear
        s+=sec.name+" LIKE '%"+ sec.value +"%'";
    }
}

console.log(s);
if(s.length!=0){
    var connect = new XMLHttpRequest();
    connect.onreadystatechange=function(){
        if (connect.readyState==4 && connect.status==200){
            var resu=connect.responseText;
            console.log(resu);
            var tab=document.getElementById("main_tab");
            tab.innerHTML=resu;


        }
    };
    connect.open("POST","../../Controller/stage.php",false);
    connect.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    connect.send("s="+s);

}

}

发送的字符串用于示例:

CP_Stage LIKE'%90%'和secteur_stage LIKE'%ait%'

但是,当我在php页面中打印请求时,我有类似以下内容:

SELECT * FROM Stage WHERE CP_Stage LIKE'%'和secteur_stage LIKE'%ait%';

我不知道为什么我的第一个数字以第一个%消失。 如果有人有想法,那就太好了,谢谢!

百分号是一个特殊字符。 是否有%,&,等特殊字符? 等需要进行编码。 您的“%90”将转换为Ascii值。 您必须使用encodeURIComponent对这些值进行编码。

s += cp.name + " LIKE '" + encodeURIComponent("%" + cp.value + "%") + "'";

请注意,encodeURIComponent不会转义'字符。 如果cp.value带有' ,则必须将其替换为其编码值: %27

顺便说一句..从客户端发送mySQL查询不是一个好主意-那是一个主要的安全漏洞。 仅发送值并在服务器端构建查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM