首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用for()更新mysql数据库中的多行

使用for()更新mysql数据库中的多行
EN

Stack Overflow用户
提问于 2016-11-10 17:54:38
回答 2查看 35关注 0票数 0

我试图更新一个数据库中的多个行。我将表中的行总数计数并绑定到一个变量:

$result = '32'

然后,我尝试查询每一行:

代码语言:javascript
复制
for ($x = 0; $x <= $result; $x++)
{
    if ($update = $db -> prepare("UPDATE substrates SET substrate_name = ?, substrate_desc = ?, substrate_base = ?, substrate_tax = ? WHERE substrate_id = ?"))
    {
        $substrate_name = $_POST['substrate_name'];
        $substrate_desc = $_POST['substrate_desc'];
        $substrate_base = $_POST['substrate_base'];
        $substrate_tax  = $_POST['substrate_tax'];
        $substrate_id   = $x;
        $update -> bind_param('sssss', $substrate_name, $substrate_desc, $substrate_base, $substrate_tax, $substrate_id);
        if ($update -> execute() == true) {
            // Success stuff...
        } 
        else {
            // Error stuff...
        }
        $update -> close();
    }
}

我的问题是,当我运行这个脚本时,表中的每一行都填充了编辑的最后一行。例如:

代码语言:javascript
复制
AAA | Aaaaa | 1.00 | 6.35
BBB | Bbbbb | 2.00 | 6.35
CCC | Ccccc | 3.00 | 6.35

变成:

代码语言:javascript
复制
CCC | Ccccc | 3.00 | 6.35
CCC | Ccccc | 3.00 | 6.35
CCC | Ccccc | 3.00 | 6.35

如何修复此脚本,使其能够单独更新每一行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-10 18:36:33

我在表单中更改了"name“字段,以包含基板的ID:

<input name="substrate_name_'.$substrate_id.'" />

然后对update查询执行相同的操作(其中id由循环$x定义):

代码语言:javascript
复制
$substrate_name = $_POST['substrate_name_'.$x];
$substrate_desc = $_POST['substrate_desc_'.$x];
$substrate_base = $_POST['substrate_base_'.$x];
$substrate_tax  = $_POST['substrate_tax_'.$x];
$substrate_id   = $x;
$update -> bind_param('sssss', $substrate_name, $substrate_desc, $substrate_base, $substrate_tax, $substrate_id);

这给了我想要的结果。感谢Rimon的想法和每个人的评论。

票数 0
EN

Stack Overflow用户

发布于 2016-11-10 17:57:42

试试这个:

代码语言:javascript
复制
for ($x = 0; $x <= $result; $x++)
{
    if ($update = $db -> prepare("UPDATE substrates SET substrate_name = ?, substrate_desc = ?, substrate_base = ?, substrate_tax = ? WHERE substrate_id = ?"))
    {
        $substrate_name = $_POST['substrate_name'][$x];
        $substrate_desc = $_POST['substrate_desc'][$x];
        $substrate_base = $_POST['substrate_base'][$x];
        $substrate_tax  = $_POST['substrate_tax'][$x];
        $substrate_id   = $x;
        $update -> bind_param('sssss', $substrate_name, $substrate_desc, $substrate_base, $substrate_tax, $substrate_id);
        if ($update -> execute() == true) {
            // Success stuff...
        } 
        else {
            // Error stuff...
        }
        $update -> close();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40534100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档