可能重复:
“slash before every quote” problem逃脱INSERT语句之前数组值在每个循环
我有一个奇怪的情况:我的代码工作在本地计算机上时,在本地主机,但时我发布它在Web服务器上的行为有所不同。
我有一个复选框沿着他们的学生列表,以便用户可以选择复选框,并在点击删除按钮后,那些从列表中删除,这意味着我将它们插入到不同的表中。
注:studentid是一个像斜线KNC/2012/SEM1/BSC/125
现在我的JavaScript功能,使得Ajax请求并发送该值作为参数向我的PHP文件,该文件经过所述阵列并使用foreach循环插入它们。
javascript代码:
function flagRemovedStudents(iar){
displayBox = document.getElementById("studentBox");
elements = document.getElementsByName('stids[]');
data = [];
for (i = 0; i < elements.length; i++){
if (elements[i].checked){
data.push('stids[]='+encodeURIComponent(elements[i].value));
}
}
params = "iars="+encodeURIComponent(iar)+"&fl="+encodeURIComponent(1)+"&"+data.join('&');
alert(params); // just to check what values are being passed to php script
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
result = xmlhttp.responseText;
alert(result);
displayBox.className = "dimBox";
setTimeout(function(){showStudentsAfterRemoval(iar);},200);
}
}
xmlhttp.open("POST","remst.php",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(params);
}
现在我的PHP工作原理:
$session = $_SESSION['sess'];
$iarsid = mysql_real_escape_string($_POST['iars']);
$studentid = $_POST['stids'];
$num = 0;
foreach ($studentid as $value) {
$val = mysql_real_escape_string($value);
$q1 = "insert into removedstudents(sessionid,iarsid,studentid) values('$session','$iarsid','$value')";
$r1 = mysql_query($q1) or die(mysql_error());
if(mysql_affected_rows() > 0){
$num = $num + 1;
}
}
echo $num." student(s) have been removed from the responsibility.";
问题是,在Web服务器上的studentid被插入为KNC\/2012\/sem1\/BSC\/125
这是影响我的进一步查询。
令人惊讶的是,它被插入到本地主机所需的格式,即我的开发环境中,但是当我将相同的代码放到网络服务器上时,它会以某种方式表现出奇怪的行为。 请帮忙。
那么,studentid的插入方式与您给出的第一个示例完全相同?这是一个什么问题? – mario
@mario ohh不,这个网站也逃过了我插入的studentid。它就像KNC然后反斜杠,然后正斜杠然后2012年然后再斜杠等等... – coder101