2016-04-20 33 views
-1

我是一個JavaScript新手,我正在寫一個應用程序使用JavaScript與服務器端的PHP,我試圖使用AJAX發送數據到我的PHP腳本。這是我的代碼如下

的Javascript:

$(document).on("click", ".uib_w_18", function(evt) 
{ 
    var lecturer = document.getElementById("reg_name").value; 
    //var lecturer = $("#reg_name").val(); 
    var dept = document.getElementById("reg_dept").value; 
    var level = document.getElementById("reg_level").value; 
    var course = document.getElementById("reg_course").value; 
    var start = document.getElementById("reg_time_1").value; 
    var ade = 2; 
    window.alert(lecturer); 
    var dataString = '?ade=' + ade+'&lecturer='+lecturer+'&dept='+dept +'&level='+level+'&course='+course+'&start='+start; 

    $.ajax({ 
      type: "GET", 
      url: 'http://localhost/my_queries.php', 
      data: dataString, 
      success: window.alert ("I've been to localhost.") 
     }); 
    window.alert(dataString); 
}); 

,並在服務器端:

<?php 
$dbhost = "localhost"; 
$dbuser = "root"; 
$dbname = "myDatabase"; 
$dbpass = null; 
//Connect to MySQL Server 
echo "yo"; 
$con = mysqli_connect($dbhost, $dbuser,$dbpass,$dbname); 
$level = $_GET['level']; 
$lecturer = $_GET['lecturer']; 
$sql = "INSERT INTO level1(message, department) 
     VALUES ($level,'Jane')"; 
$sql2 = "INSERT INTO level1(message, department) 
     VALUES ($lecturer,'Jane')"; 
if ($con->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $con->error; 
} 

?> 

現在的問題是 '$ SQL1' 成功執行了,但 '$ SQL2' 沒有。我已經有一段時間了,發現腳本中的$ _GET只適用於數值數據。我已經確認問題不在於我的表的數據類型,我可以直接從PHP插入文字字符串,我也確認「dataString」收集數據就像我想要的那樣。 (window.alert(dataString);)顯示正確的輸出。 我覺得我錯過了一些非常基本的東西,但我無法弄清楚它是什麼。我覺得額外的眼睛會有所幫助,任何幫助將不勝感激,謝謝。

+3

[強制SQL注入警告](https://stackoverflow.com/questions/60174/how-can-i-prevent -sql -injection-in-php) – jDo

+3

*「但是'$ sql2'沒有。」* - 簡單;你從來沒有執行過它。如果'$ lecturer'是'VALUES($ lecturer,'Jane')'中的一個字符串,那也會讓你失敗。 –

回答

0

通過 「動態」 的SQL查詢的正確方法是像這樣:

$sql = "INSERT INTO level1(message, department) 
     VALUES ('".$level."','Jane')"; 
$sql2 = "INSERT INTO level1(message, department) 
     VALUES ('".$lecturer."','Jane')"; 
+0

非常感謝:D,Christian Bonato。這只是解決了問題!..非常感謝。 – lukman