gpt4 book ai didi

php - 如何将循环值传输到另一个 PHP 表

转载 作者:可可西里 更新时间:2023-11-01 08:26:23 24 4
gpt4 key购买 nike

我正在尝试在提交按钮后将我的循环值传输到另一个表中

这是我的代码

$stmt = $db->prepare('Select * from productbottomtopstiches WHERE
productsrfinformationID = :prodID');

$stmt->bindParam(':prodID', $srfid, PDO::PARAM_INT);

$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

$topstichescode= $row['topstichescode'];
$color = $row['color'];
$topstichestkt = $row['topstichestkt'];

$stmt = $db->prepare("INSERT INTO productpifbottomtopstiches(
productpifinformationID,
topstichescode,
color,
topstichestkt
)
VALUES(
:pid,
:code,
:color,
:tkt
)");

$stmt->execute(array(
':pid' => $srfid,
':code' => $topstichescode,
':color' => $color,
':tkt' => $topstichestkt ));
}

productbottomtopstiches 的值为 3

它显示 3 个不同的 ID、代码、颜色和 TKT 值,但是当我添加插入代码时,它只保存循环中的第一个值,第二个和第三个值丢失..

有人可以帮我解决吗?谢谢。

最佳答案

作为替代方案,您可以将所有查询合并为一个查询。这也消除了获取的需要,然后循环第一个选择查询并执行多个语句。但该 ID 的绑定(bind)仍将存在:

例子:

$stmt = $db->prepare('
INSERT INTO productpifbottomtopstiches(
productpifinformationID,
topstichescode,
color,
topstichestkt
)
SELECT productsrfinformationID, topstichescode, color, topstichestkt FROM
productbottomtopstiches WHERE productsrfinformationID = :prodID
');

$stmt->bindParam(':prodID', $srfid, PDO::PARAM_INT);
$stmt->execute();

但无论出于何种原因,您仍然想继续这条路线,将第二个 prepare 移到外面并放入另一个容器中:

// first statement
$stmt = $db->prepare('Select * from productbottomtopstiches WHERE
productsrfinformationID = :prodID');

$stmt->bindParam(':prodID', $srfid, PDO::PARAM_INT);

$stmt->execute();

// second statement
$stmt2 = $db->prepare("INSERT INTO productpifbottomtopstiches(
productpifinformationID,
topstichescode,
color,
topstichestkt
)
VALUES(
:pid,
:code,
:color,
:tkt
)");

while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

$topstichescode = $row['topstichescode'];
$color = $row['color'];
$topstichestkt = $row['topstichestkt'];

// execute second statement
$stmt2->execute(array(
':pid' => $srfid,
':code' => $topstichescode,
':color' => $color,
':tkt' => $topstichestkt
));
}

如果您想知道它只插入一次的原因是因为,您使用相同的 $stmt 变量准备进入循环内的第二个,覆盖第一个准备好的语句你希望被循环播放。这就是它在第一次插入后停止的原因。

关于php - 如何将循环值传输到另一个 PHP 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35191292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com