使用%

时间:2017-05-03 12:47:18

标签: javascript php html sql

所以我发送一个带有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%' AND secteur_stage LIKE'%ait%'

但是当我在php页面中打印请求时,我有类似的东西:

  

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

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

1 个答案:

答案 0 :(得分:1)

百分号是一个特殊的字符。任何特殊字符,如%,&,?等需要编码。你的"%90"转换为Ascii值。您必须使用encodeURIComponent对这些值进行编码。

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

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

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