可能重複:
「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