用于在数据库中添加用户的逻辑

时间:2016-08-29 17:24:45

标签: php mysql

我正在建立一个电子商务网站,并在会话中存储产品(ID和数量)[" cart_array"](来自Adam Khoury&P;教程:P)。现在我希望我可以将这些产品详细信息插入到称为costumer_orders的表中。我需要一些逻辑,可以从表产品中提取这些细节,然后将它们插入customer_orders表中。如果还有其他最佳解决方案,请提出建议。 这是我的代码

<?php
$dynamicDisplay = '';
if (isset($_SESSION["name"]) && !empty($_SESSION['name'])) {
    $name = $_SESSION['name'];
    //VARIABLES TO SHOW SELETED ITEMS BY THE USER
    $dynamicDisplay .= '<h1>Thank <?php echo $name;?> for Ordering from Us.</h1>';
    $dynamicDisplay .= 'Your Order Details are: <br/>';
    $dynamicDisplay .= '<ol>';

    //FOREACH LOOP FOR ACCESSING ALL ITEMS FROM THE CART
    foreach ($_SESSION["cart_array"] as $each_item) {
        $item_id = $each_item["item_id"];
        $sql = mysqli_query($con, "SELECT * FROM products WHERE id='$item_id' LIMIT 1");
        while ($row = mysqli_fetch_array($sql)) {
            $product_name = $row['product_name'];
            $price = $row['price'];
            $detail = $row['details'];


        //SOME CODE HERE THAT CAN ALSO INSERT THIS DATA IN customer_orders table 
       // I tried this code but nothing happens

 $insertData = "INSERT INTO customer_orders(name, products, price, date )VALUES ($name, $product_name, $price,now())";
        $dataQuery = mysqli_query($con, $insertData);

        }
        $dynamicDisplay .= '<li>' . $product_name . '</li>';
    }
    $dynamicDisplay .= '</ol>';
    $dynamicDisplay .= 'To';
    $dynamicDisplay .= $_SESSION['address'];

}else {
    header("location: index.php");
}
?>

1 个答案:

答案 0 :(得分:2)

正如我在评论中所述,字符串值要求引用它们。

你的VALUES ($name, $product_name, $price,now())";会在这里失败,需要阅读:

VALUES ('$name', '$product_name', $price,now())";

但是,如果碰巧有任何MySQL会抱怨的字符,比如撇号,那么这也会引发语法错误。

因此,你需要逃避这些值,这是你应该首先做的事情。准备好的语句将处理所有这些并帮助防止SQL注入

参考文献:

还要确保会话已启动。