我发送的变量如下:
xmlhttp.open("GET","insert-karma.php?pid=<? echo $pid; ?>",true);
AJAX部分似乎不是问题,如果我检查Sript PHP正确回显整数。 (它将网址显示为:insert-karma.php?pid=5
)。然而,PHP没有得到变量。 (我试着回声并且它没有显示出对角线)
这是PHP文件:
// Connect to db;
$pid = $_POST['pid'];
$sql="UPDATE Poems SET Karma = Karma + 1 WHERE Pid = '$pid'";
// Disconnect form database;
我做错了什么?如何设法将$pid
发送到PHP update-karma.php?
答案 0 :(得分:2)
尝试$ pid = $ _GET ['pid']
或
$ pid = $ _REQUEST ['pid'];
答案 1 :(得分:2)
您正在使用GET发送变量,因此在您的php中您必须使用$ _GET变量
$pid = $_GET["pid"];
还要避免在sql查询中直接使用变量。你很容易受到sql注入。
如果使用mysql:
$pid = mysql_real_escape_string($_GET["pid"]);
或者如果您传递的是整数:
$pid = (int)$_GET["pid"];
答案 2 :(得分:0)
这是一个建议,因为你已经得到了答案。在编写JS代码时,尝试使用一些javascript库来帮助您。 我建议jquery
另请阅读GET,POST请求以及何时应该使用它的区别。
答案 3 :(得分:0)
首先你不应该在你的ajax请求中使用PHP它只是让事情变得更复杂而PHP首先用于服务器端脚本 如果你明白使用POST,你应该使用xmlhttp.open(“POST”,“insert-karma ....) 第三,POST和Get之间唯一重要的区别(不是唯一但重要的)是:
可以缓存GET请求
GET请求可以保留在浏览器历史记录中
GET请求可以加入书签
GET请求可以分发&amp;共享
GET请求可以被黑客攻击
所以你不能使用Get For For Safe和危险的行为,如LOGIN OR ......
POST可以处理太长的数据
帖子更安全Cuz它不会被缓存或保存在历史记录中或加入书签
你可以清楚地注意到POST不会显示在浏览器地址栏中,但会显示Get do 'www.anything.com/index.php?bla=bhe'
我希望我在这里帮助!! :)