我正在建立一个电子商务网站,并在会话中存储产品(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");
}
?>
答案 0 :(得分:2)
正如我在评论中所述,字符串值要求引用它们。
你的VALUES ($name, $product_name, $price,now())";
会在这里失败,需要阅读:
VALUES ('$name', '$product_name', $price,now())";
但是,如果碰巧有任何MySQL会抱怨的字符,比如撇号,那么这也会引发语法错误。
因此,你需要逃避这些值,这是你应该首先做的事情。准备好的语句将处理所有这些并帮助防止SQL注入
参考文献:
还要确保会话已启动。