试图将存储在变量中的值存储到SQL数据库中

时间:2017-07-07 04:21:56

标签: php mysql database

关于在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>&#36;" . 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

是否有更好的方法来存储变量或正确同步它们?

感谢您的关注和帮助。

1 个答案:

答案 0 :(得分:1)

占位符应该看起来像:name而不是:$name。通过在双引号字符串中的任何位置使用$name,您需要进行字符串插值,除非将$name定义为基本上将其从字符串中删除的内容,只留下:这是无效的。占位符变得不可见。