我有一个奇怪的问题,我似乎无法解决。
我想做的是在一个页面上调用jQuery函数,将该函数的参数发送到同一服务器上的另一个.php文件,让该php文件读取变量,然后将其插入数据库。
函数触发器放在div上,如下所示:
<div class="add_button" onclick="addImg('<?php echo $value[id]; ?>');">
该功能本身如下:
function addImg(id) {
$.ajax({
url: "addImgs.php",
type: "POST",
data: {"id" : id}
});
console.log("Function called with ID: " + id);
}
我正在使用控制台在这里尝试调试一下,并且console.log() - 函数正在正确执行。如果“url”不存在,日志也会给我一个错误500。
最后,我的addImgs.php的php代码如下所示:
<?php
$id = $_REQUEST['id'];
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password, "DB_name");
$query = "INSERT INTO imgs (id) VALUES ($id)";
$result = $conn->query($query);
$conn->close();
?>
这个.php文件工作得很好,如果我添加
?id=123
到它的url的末尾,并且值“123”被添加到数据库中的表中。
所以我的假设是问题是AJAX函数和PHP文件之间的连接。
请帮助:)
答案 0 :(得分:2)
在您的问题中,您说变量名称为id
,但在实际网站上,您提供的名称链接为img_id
。
function addImg(id) {
$.ajax({
url: "http://projects.mn-web.dk/instafetcher/addImgs.php",
type: "POST",
data: {"img_id" : id}
});
console.log("Function called with ID: " + id);
}
您确定服务器端脚本还需要img_id
吗?特别是,您确定在实际的PHP脚本中有这一行:
$id = $_REQUEST['img_id'];
而不是这个:
$id = $_REQUEST['id'];
另请注意,您的图片ID不是整数:
img_id="828281229958329915_2834748"
因此,请确保id
中imgs
的类型为varchar
或其他可存储字符串的内容,而不是int
或bigint
。< / p>
更新:正如Ivan在评论中指出的那样,由于img_id
是一个字符串而不是整数,因此INSERT
查询无效,需要将id括在引号中。一种简单的方法是:
$query = "INSERT INTO imgs (id) VALUES (\"".mysqli_real_escape_string($id)."\")";
但更恰当的方法是使用准备好的陈述: