我一直在尝试将数据插入到mysql数据库的表中。使用POST方法使用ajax发送此数据。但是,当我尝试将其插入数据库时,没有任何反应。
所以这里是将数据发送到php文件的javascript函数。
addToCart: function(itemId,userId){
let request = new XMLHttpRequest();
request.open("POST", "../E-CommerceCore/addToCart.php?
itemId="+ itemId + "?userId=" + userId, true);
request.send();
},
这是它的使用地点。这嵌套在一个更大的函数中,这就是book [i] .Id来自的地方。
document.getElementById('add-to-cart').onclick = function(){
cartFunctions.addToCart(book[i].Id, '1');
};
所以这需要一个item id和一个用户id,并将它们存储在php变量中。
class Cart
{
public function addToCart($item,$user){
include 'connect.php';
$query = $bookStore->prepare("INSERT INTO cart SET item_Id=?, user_Id=?");
$query->execute([$item,$user]);
}
}
$cartManager = Cart();
$itemId = $_REQUEST["itemId"];
$userId = $_REQUEST["userId"];
$cartManager->addToCart("$itemId","$userId");
此php文件然后运行addToCart函数,该函数应将其插入表中。这是我遇到问题的地方,因为当用户单击按钮时,数据不会插入到数据库中。我将connect.php文件用于从同一数据库中的不同表中选择的另一个控制器,如果这是一个问题,是的,我已经检查以确保与数据库的连接是好的。任何见解都会得到极大的赞赏。请不要jQuery解决方案。谢谢你的时间和精力。
答案 0 :(得分:1)
request.open("POST", "../E-CommerceCore/addToCart.php? itemId="+ itemId + "?userId=" + userId, true);
您使用网址将参数作为GET发送,并且由于您使用了另一个?来分隔2个参数,因此您还有另一个错误。请点击此链接发送您的数据:Send POST data using XMLHttpRequest
var http = new XMLHttpRequest();
var url = "path_to_file.php";
var params = "itemId="+ itemId + "&userId=" + userId; //Please note that the 2 params are separated by an **&** not a **?** as in your question
http.open("POST", url, true);
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
http.send(params);
传递参数时,此处的引号也是不必要的:
$cartManager->addToCart("$itemId","$userId");
如果可以在调用var_dump($_REQUEST)
方法之前尝试addToCart
,以确保通过javascript请求成功发送参数。
现在关于sql查询,你必须更新类并使用bindParam
然后调用execute
。我更新了你的php代码如下:
class Cart{
public function addToCart($item,$user){
include 'connect.php';
$query = $bookStore->prepare("INSERT INTO cart SET item_Id=:item_id, user_Id=:user_id");
$query->bindParam(':item_id', $item);
$query->bindParam(':user_id', $user);
$query->execute();
}
}
$cartManager = new Cart();
$itemId = $_REQUEST["itemId"];
$userId = $_REQUEST["userId"];
$cartManager->addToCart($itemId, $userId);
有关准备好的陈述的更多参考,您可以查看:http://php.net/manual/en/pdo.prepared-statements.php