关于在PHP中的mySQL数据库中存储变量的快速问题。
if(count($_SESSION['cart'])>0) {
$ids = array();
foreach ($_SESSION['cart'] as $id => $value) {
array_push($ids, $id);
}
$stmt = $food->readByIds($ids);
$total = 0;
$item_count = 0;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
extract($row);
$quantity = $_SESSION['cart'][$id]['quantity'];
$sub_total = $price * $quantity;
//echo "<div class='product-id' style='display:none;'>{$id}</div>";
//echo "<div class='product-name'>{$name}</div>";
// =================
echo "<div class='cart-row'>";
echo "<div class='col-md-8'>";
echo "<div class='food-name m-b-10px'><h4>{$name}</h4></div>";
echo $quantity > 1 ? "<div>{$quantity} items</div>" : "<div>{$quantity} item</div>";
echo "</div>";
echo "<div class='col-md-4'>";
echo "<h4>$" . number_format($price, 2, '.', ',') . "</h4>";
echo "</div>";
echo "</div>";
// =================
$item_count += $quantity;
$total += $sub_total;
}
$sql = "INSERT INTO food_orders (food_list, food_total, created_on) VALUES (:$name, :$total, :current_timestamp)";
$stmt = $db->prepare($sql);
$stmt->bindParam(':$name', $_POST['food_list'], PDO::PARAM_STR);
$stmt->bindParam(':$total', $_POST['food_total'], PDO::PARAM_STR);
$stmt->bindParam(':current_timestamp',$_POST['created_on'], PDO::PARAM_STR);
$stmt->execute();
目前,我正在尝试将计算出的值存储在$ _POST标记下的数据库中,但我不断抛出错误:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number:
parameter was not defined in C:\wamp64\www\phpFoodSitewithCart\charge.php
是否有更好的方法来存储变量或正确同步它们?
感谢您的关注和帮助。
答案 0 :(得分:1)
占位符应该看起来像:name
而不是:$name
。通过在双引号字符串中的任何位置使用$name
,您需要进行字符串插值,除非将$name
定义为基本上将其从字符串中删除的内容,只留下:
这是无效的。占位符变得不可见。