【发布时间】:2021-09-11 13:25:07
【问题描述】:
老师好,
一个初学者在这里几乎要秃头,我如何将变量分配给从数据库中获取的关联数组。 我有一个关联数组,它的检索方式如下。我想要的是将变量分配给这个数组,然后迭代地插入另一个表 tbl_product。
Array
(
[0] => Array
(
[pid] => 1
[pname] => Delta Café
[pcategory] => Mobiliário de Cozinha
[purchaseprice] => 120
[pstock] => 120
[pdescription] => 120
[pimage] => 61379859e4d6d.jpeg
)
[1] => Array
(
[pid] => 2
[pname] => Baygon
[pcategory] => Material de Higiene e Limpeza
[purchaseprice] => 500.58
[pstock] => 8
[pdescription] =>
[pimage] => 613b649f23a5f.jfif
)
我的代码,
if(isset($_POST['btnaddproduct'])){
$select=$pdo->prepare("select * from tbl_pending");
$select->execute();
$row=$select->fetchAll(PDO::FETCH_ASSOC);
foreach($row as $product_details=>$key){
$productname=$product_details['pname'];
$category=$product_details['pname'];
$stock=$product_details['stock'];
$description=$product_details['pdescription'];
$productimage=$product_details['pimage'];
$insert=$pdo->prepare("insert into tbl_product(pname,pcategory,purchaseprice,pstock,pdescription,pimage) values(:pname,:pcategory,:purchaseprice,:pstock,:pdescription,:pimage)");
$insert->bindParam(':pname',$productname);
$insert->bindParam(':pcategory',$category);
$insert->bindParam(':purchaseprice',$productprice);
$insert->bindParam(':pstock',$stock);
$insert->bindParam(':pdescription',$description);
$insert->bindParam(':pimage',$productimage);
}
我注意到只插入了 1 个项目。我想要的是遍历数组, 插入到 tbl_product 表中,插入成功后,我想从 tbl_pending 表中删除插入的角色。 我将不胜感激。
【问题讨论】:
-
嗨 Magnus,感谢您的快速回复。我的 $pdo->prepare 已经在 foreach 循环之前。我已经包含了 insert-execute(); . 除非我对 $pdo-prepare 不了解。我的问题是唯一的第一个元素被插入。如何遍历该数组。
-
您的插入准备不在循环之外(我指的是循环)。在下面检查我的答案。您还错误地使用了
foreach。它实际上应该在这里抛出一堆警告。 -
这能回答你的问题吗? PHP Insert data from one table to another - 即使下面的答案应该可以解决您的问题,这也是一种更好的方法(直接在 MySQL 中进行一次查询)
标签: php arrays associative