使用POST将从javascript发送的数据插入到mysql数据库中

时间:2018-03-27 00:22:28

标签: javascript php mysql ajax

我一直在尝试将数据插入到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解决方案。谢谢你的时间和精力。

1 个答案:

答案 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