2011-11-11 33 views
0

我有一個頁面,我使用AJAX來保存數據庫中的一些數據。如下圖所示,當我點擊按鈕時,它將數據發佈到add-to-db.php如何通過AJAX和PHP發佈這些變量?

我的問題是我使用了數字而不是數值作爲我的測試工作。現在我必須利用變量,而不是。
我想我必須發佈$dealid$myid的值,但我該怎麼做?

謝謝。

product.php

我有這個

<script> 
$(function(){ 
    $("#JqPostForm").submit(function(e){ 
     e.preventDefault(); 

     $.post("add-to-db.php", 
     function(data){ 

      $("#message_post").html("Thank you"); 


     }); 
    }); 

}); 
</script> 

$dealid = (int)$_GET["id"]; 
$myid = $_SESSION['SESS_MEMBER_ID']; 

,並在添加到db.php中我有這個疑問,但它不保存在DB

$query = "INSERT INTO reverse_relations (user_id, product_id, ip) VALUES ('$_SESSION['SESS_MEMBER_ID']', '$dealid', '$_SERVER[REMOTE_ADDR]')"; 

但是當我加了VALUES ('1', '2', '$_SERVER[REMOTE_ADDR]')";它就起作用了

+0

測試添加到db.php中一些$ _GET變量手動,看看有什麼與查詢發生。從數字到字母數字的轉換可能無效,因爲值周圍沒有引號。另外,請注意SQL注入。 –

回答

2

首先,表格中的變量需要將發送到add-to-db.php。現在,沒有變量正在發送,因爲沒有在您的$ .post()調用中指定。要做到這一點,您可以:

$.post("add-to-db.php", $("#myform").serialize(), function (data){ 
    $("#message_post").html("Thank you"); 
}); 

一旦您發送的變量關閉添加到db.php中,您可以通過訪問$ _POST數組,假設你有register_globals的關閉在php.ini閱讀,和你的領域被稱爲dealid

$query = "INSERT INTO reverse_relations (user_id, product_id, ip) VALUES ('$_SESSION['SESS_MEMBER_ID']', '".$_POST['dealid']."', '$_SERVER[REMOTE_ADDR]')"; 

但是 - 不要使用此代碼。您必須對所有POST進行santize,並且應該在查詢中清理SESSION和SERVER變量,否則您將冒着網站安全的風險。

$dealid = mysql_real_escape_string($_POST['dealid']); 
$sessid = mysql_real_escape_string($_SESSION['SESS_MEMBER_ID']); 

然後在代替你的SQL查詢中使用這些變量:

$query = "INSERT INTO reverse_relations (user_id, product_id, ip) VALUES ('{$sessid}', '{$dealid}', '$_SERVER[REMOTE_ADDR]')"; 
+0

謝謝你,但dealid是從URL中獲得的。不是 – EnexoOnoma

+0

它正在工作,但是我希望得到product.php?id = 1而不是將它放在文本框中 – EnexoOnoma

+1

要將產品的'id' get參數傳遞給add-to-db.php,你可以很容易地用一個隱藏的表單變量來回顯:''/>'。這將包括它在POST中添加到db.php –