gpt4 book ai didi

php - 插入每个数据不同的行 PDO

转载 作者:行者123 更新时间:2023-11-30 22:53:08 24 4
gpt4 key购买 nike

我有 10 个同名的输入,我试图将它们插入每一行但我不确定我应该怎么做,我在谷歌上搜索以查看是否有任何答案但失败了。

我希望我解释清楚了。

我的代码如下:

质量

我用 PHP 循环输入

for($x = 0; $x <= 10; $x++){
print '
<tr>
<td><input class="form-mod" type="text" name="sn[]"/></td>
<td><input class="form-mod" type="text" name="ename[]"/></td>
<td><input class="form-mod" type="text" name="hrs[]"/></td>
<td><input class="form-mod" type="text" name="sales[]"/></td>
<td><input class="form-mod" type="text" name="wages[]"/></td>
<td ><input class="form-mod" type="text" name="inc[]"/></td>

</tr>
';
}

PHP 代码

    if(isset($_POST['submited'])){
$rows = array( array($_POST['pc'],$_POST['wn'],$_POST['from'],$_POST['to'],$_POST['sn'],$_POST['ename'],$_POST['hrs'],$_POST['sales'],$_POST['wages'],$_POST['inc'] )


);

$args = array_fill(0, count($rows[0]), '?');

$query = "INSERT INTO wages (program_code,week_no,`from`,`to`,serial_no,name,hrs,sales,wages,incentive) VALUES (".implode(',', $args).")";
$stmt = $dbo->prepare($query);

foreach ($rows as $row)
{
$stmt->execute($row);
}


if(!$stmt->rowCount() >= '1'){
print "unsuccessfully insert";
}else{
print "successfully inserted";
}
}

已更新

我修改了@Vitor Lima 输入的代码。我删除了这段代码“implode(',', $row)””并将其替换为 ?,?,?,? 并且它起作用了。但是,如果我在输入页面中只输入 2 行带有值,它仍会将剩余的 8 行插入到数据库中,因此 2 行带有值和 8 是空的。知道如何克服这个问题

if(isset($_POST['submited'])){
for($x = 0; $x < 10; $x++){
$row = array($_POST['pc'], $_POST['wn'], $_POST['from'], $_POST['to'],
$_POST['sn'][$x], $_POST['ename'][$x], $_POST['hrs'][$x],
$_POST['sales'][$x], $_POST['wages'][$x], $_POST['inc'][$x]);

$query = "INSERT INTO wages (program_code, week_no,`from`,`to`,serial_no,
name,hrs,sales,wages,incentive) VALUES (?,?,?,?,?,?,?,?,?,?)";
$stmt = $dbo->prepare($query);
$stmt->execute($row);

if(!$stmt->rowCount() >= '1'){
print "unsuccessfully insert";
}else{
print "successfully inserted";
}
}
}

最佳答案

查找您的页面:输入的名称有 [],这意味着它们将作为数组传递给服务器,例如,$_POST['sn'] 将是一个有十个位置的数组(你可以使用 var_dump 来证明...)

所以,在你的 PHP 脚本中,你应该做一个循环,类似这样的东西

if(isset($_POST['submited'])){

$stmt = $dbo->prepare(
"INSERT INTO wages
(program_code, week_no,`from`,`to`,serial_no, name, hrs, sales, wages, incentive)
VALUES (?,?,?,?,?,?,?,?,?,?)"
);

for($x = 0; $x < 10; $x++){
$row = array($_POST['pc'], $_POST['wn'], $_POST['from'], $_POST['to'],
$_POST['sn'][$x], $_POST['ename'][$x], $_POST['hrs'][$x],
$_POST['sales'][$x], $_POST['wages'][$x], $_POST['inc'][$x]);

$stmt->execute($row);

if(!$stmt->rowCount() >= '1'){
print "unsuccessfully insert";
}else{
print "successfully inserted";
}
}
}

关于php - 插入每个数据不同的行 PDO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476586/

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