2011-11-11 31 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 –