如何在不重复参数的情况下将参数绑定到多个值
How to bind params to multiple values without parameter repetition
我准备好的声明如下所示:
$stmt20 = $conexao->prepare("
INSERT INTO esc_usuarios_pgtoparcelas (parcela_codigo_plano, parcela_mes, parcela_valorBonificacao, parcela_situacao)
VALUES
(LAST_INSERT_ID(), ?, ?, ?),
(LAST_INSERT_ID(), ?, ?, ?)
");
$stmt20->bind_param('sdssds', $m1, $zero, $parcela_situacao_prog, $m2, $zero, $parcela_situacao_prog);
$stmt20->execute();
如您所见,参数重复,$m1
和 $m2
除外。我可以将这些重复的参数绑定到多个值并保留这些 m1
和 m2
吗?即使我不得不插入很多值,绑定顺序也不会改变。
您需要使用命名参数,而不是使用问号参数。参见 the php docs。
$stmt20 = $conexao->prepare("
INSERT INTO esc_usuarios_pgtoparcelas (parcela_codigo_plano, parcela_mes, parcela_valorBonificacao, parcela_situacao)
VALUES
(LAST_INSERT_ID(), :m1, :zero, :parcela_situacao_prog),
(LAST_INSERT_ID(), :m2, :zero, :parcela_situacao_prog)
");
$stmt20->execute(array(
':m1' => $m1,
':m2' => $m2,
:zero => $zero,
:parcela_situacao_prog => $parcela_situacao_prog
));
通常你不会像这样尝试加倍,你会准备一次你的陈述,然后 运行 用不同的值准备两次。我不是 PHP 编码员所以我从 GMB 的 post:
借来的
$stmt20 = $conexao->prepare("
INSERT INTO esc_usuarios_pgtoparcelas (parcela_codigo_plano, parcela_mes, parcela_valorBonificacao, parcela_situacao)
VALUES
(LAST_INSERT_ID(), :m, :zero, :parcela_situacao_prog)
");
$stmt20->execute(array(
:m => $m1,
:zero => $zero,
:parcela_situacao_prog => $parcela_situacao_prog
));
$stmt20->execute(array(
:m => $m2,
:zero => $zero,
:parcela_situacao_prog => $parcela_situacao_prog
));
如果要插入 1000 个值,则准备语句一次并执行 1000 次(循环)..
$stmt20 = $conexao->prepare("
INSERT INTO esc_usuarios_pgtoparcelas (parcela_codigo_plano, parcela_mes, parcela_valorBonificacao, parcela_situacao)
VALUES
(LAST_INSERT_ID(), :m, :zero, :parcela_situacao_prog)
");
for ($x = 0; $x <= 1000; $x++) {
$stmt20->execute(array(
:m => $array_of_m[$x],
:zero => $zero,
:parcela_situacao_prog => $parcela_situacao_prog
));
}
在 mysqli 的 php 帮助文档中挖掘,我猜你的情况的代码可能更像:
$stmt20 = $conexao->prepare("
INSERT INTO esc_usuarios_pgtoparcelas (parcela_codigo_plano, parcela_mes, parcela_valorBonificacao, parcela_situacao)
VALUES
(LAST_INSERT_ID(), ?, ?, ?)
");
$stmt20->bind_param('sdssds', $m, $zero, $parcela_situacao_prog);
for ($x = 0; $x <= 1000; $x++) {
$m = $array_of_m[$x];
$stmt20->execute();
}
主要是我试图理解这样一种观念,即您设置一次,然后只需更改值并重复调用执行..
如前所述,我不是 php 编码员..我引用了这个:PHP/mysql: mysqli prepared statement insert same value multiple times within for loop
我准备好的声明如下所示:
$stmt20 = $conexao->prepare("
INSERT INTO esc_usuarios_pgtoparcelas (parcela_codigo_plano, parcela_mes, parcela_valorBonificacao, parcela_situacao)
VALUES
(LAST_INSERT_ID(), ?, ?, ?),
(LAST_INSERT_ID(), ?, ?, ?)
");
$stmt20->bind_param('sdssds', $m1, $zero, $parcela_situacao_prog, $m2, $zero, $parcela_situacao_prog);
$stmt20->execute();
如您所见,参数重复,$m1
和 $m2
除外。我可以将这些重复的参数绑定到多个值并保留这些 m1
和 m2
吗?即使我不得不插入很多值,绑定顺序也不会改变。
您需要使用命名参数,而不是使用问号参数。参见 the php docs。
$stmt20 = $conexao->prepare("
INSERT INTO esc_usuarios_pgtoparcelas (parcela_codigo_plano, parcela_mes, parcela_valorBonificacao, parcela_situacao)
VALUES
(LAST_INSERT_ID(), :m1, :zero, :parcela_situacao_prog),
(LAST_INSERT_ID(), :m2, :zero, :parcela_situacao_prog)
");
$stmt20->execute(array(
':m1' => $m1,
':m2' => $m2,
:zero => $zero,
:parcela_situacao_prog => $parcela_situacao_prog
));
通常你不会像这样尝试加倍,你会准备一次你的陈述,然后 运行 用不同的值准备两次。我不是 PHP 编码员所以我从 GMB 的 post:
借来的$stmt20 = $conexao->prepare("
INSERT INTO esc_usuarios_pgtoparcelas (parcela_codigo_plano, parcela_mes, parcela_valorBonificacao, parcela_situacao)
VALUES
(LAST_INSERT_ID(), :m, :zero, :parcela_situacao_prog)
");
$stmt20->execute(array(
:m => $m1,
:zero => $zero,
:parcela_situacao_prog => $parcela_situacao_prog
));
$stmt20->execute(array(
:m => $m2,
:zero => $zero,
:parcela_situacao_prog => $parcela_situacao_prog
));
如果要插入 1000 个值,则准备语句一次并执行 1000 次(循环)..
$stmt20 = $conexao->prepare("
INSERT INTO esc_usuarios_pgtoparcelas (parcela_codigo_plano, parcela_mes, parcela_valorBonificacao, parcela_situacao)
VALUES
(LAST_INSERT_ID(), :m, :zero, :parcela_situacao_prog)
");
for ($x = 0; $x <= 1000; $x++) {
$stmt20->execute(array(
:m => $array_of_m[$x],
:zero => $zero,
:parcela_situacao_prog => $parcela_situacao_prog
));
}
在 mysqli 的 php 帮助文档中挖掘,我猜你的情况的代码可能更像:
$stmt20 = $conexao->prepare("
INSERT INTO esc_usuarios_pgtoparcelas (parcela_codigo_plano, parcela_mes, parcela_valorBonificacao, parcela_situacao)
VALUES
(LAST_INSERT_ID(), ?, ?, ?)
");
$stmt20->bind_param('sdssds', $m, $zero, $parcela_situacao_prog);
for ($x = 0; $x <= 1000; $x++) {
$m = $array_of_m[$x];
$stmt20->execute();
}
主要是我试图理解这样一种观念,即您设置一次,然后只需更改值并重复调用执行..
如前所述,我不是 php 编码员..我引用了这个:PHP/mysql: mysqli prepared statement insert same value multiple times within for loop