我有一个页面,我使用AJAX将一些数据保存在数据库中。如下所示,当我点击按钮时,它会将数据发布到add-to-db.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'];
并且在 add-to-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 :(得分:2)
首先,需要将product.php
上的表单中的变量发送到add-to-db.php。现在,没有变量被发送,因为$ .post()调用中没有指定任何变量。为此,您可以:
$.post("add-to-db.php", $("#myform").serialize(), function (data){
$("#message_post").html("Thank you");
});
一旦将变量发送到add-to-db.php,您可以通过访问$ _POST数组来读取它们,假设您在php.ini中有register_globals OFF,并且您的字段被称为dealid
< / p>
$query = "INSERT INTO reverse_relations (user_id, product_id, ip) VALUES ('$_SESSION['SESS_MEMBER_ID']', '".$_POST['dealid']."', '$_SERVER[REMOTE_ADDR]')";
然而 - 不使用此代码。您必须对所有POST进行处理,并且应该在查询中清理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]')";