使用准备好的语句将PHP foreach数组插入mysql

使用准备好的语句将PHP foreach数组插入mysql,php,mysql,foreach,prepared-statement,sql-insert,Php,Mysql,Foreach,Prepared Statement,Sql Insert,这是我的困境,我不知所措。我正试图通过使用一条准备好的mysql语句在数组中循环添加多个值到数据库中: 如果我在foreach循环中“执行”语句,它只会添加 数组中的最后一个条目 如果我在循环之外“执行”它,它会将3个单独的行插入数据库。我想在一个created now()日期和行下填写所有列 如果我在foreach循环之前准备$stmt,那么它将错误为未定义变量。所以我把它放在循环中定义之后,即使在w3中,它表明可以在设置参数之前定义“bind_param”变量,我也不理解。谢谢 forea

这是我的困境,我不知所措。我正试图通过使用一条准备好的mysql语句在数组中循环添加多个值到数据库中:

  • 如果我在foreach循环中“执行”语句,它只会添加 数组中的最后一个条目
  • 如果我在循环之外“执行”它,它会将3个单独的行插入数据库。我想在一个created now()日期和行下填写所有列
  • 如果我在foreach循环之前准备$stmt,那么它将错误为未定义变量。所以我把它放在循环中定义之后,即使在w3中,它表明可以在设置参数之前定义“bind_param”变量,我也不理解。谢谢

    foreach ($products as $v) {
        $product_was = $v['name'];
        $product_now = $v['name'];
        $was = $v['was'];
        $now = $v['now'];
    
        $stmt = $conn->prepare("INSERT INTO $table_name (date_created, $product_was, $product_now) VALUES (now(), ?, ?)");
    
        $stmt->bind_param("ss", $was, $now);
        $stmt->execute();
    }
    $stmt->close();
    $conn->close();
    

您的表是什么样子的?您有两个相同的列名,这似乎不对?(
$product\u过去是
现在是是一样的:
$v['name']
)每个产品的表名和字段名真的会改变吗?我的表名是固定的,所以只有一个表。但我对不同的产品有不同的专栏。然后,我将每个产品分为两列,分别为“过去的产品名称”和“现在的产品名称”。我这样做的唯一原因是我试图每天存储一些产品的价格,所以这不像一种产品有一个价格。它将有许多价格。我的代码根据需要将价格放在正确的列中,因此“name”对我来说很有用,上面稍微简化了一点,但这是让它一次绑定一行的顺序和定位!?您的表是什么样子的?您有两个相同的列名,这似乎不正确?(
$product\u过去是
现在是是一样的:
$v['name']
)每个产品的表名和字段名真的会改变吗?我的表名是固定的,所以只有一个表。但我对不同的产品有不同的专栏。然后,我将每个产品分为两列,分别为“过去的产品名称”和“现在的产品名称”。我这样做的唯一原因是我试图每天存储一些产品的价格,所以这不像一种产品有一个价格。它将有许多价格。我的代码根据需要将价格放在正确的列中,因此“name”对我来说很有用,上面稍微简化了一点,但这是让它一次绑定一行的顺序和定位!?