【问题标题】:foreach loop in a form with database table data, change the data and update the database in a wordpress plugin带有数据库表数据的表单中的 foreach 循环,更改数据并在 wordpress 插件中更新数据库
【发布时间】:2020-02-22 18:29:39
【问题描述】:

我正在构建一个有趣的 wordpress 插件,我想我想要一些疯狂的东西。

  1. 使用 foreach 循环创建一个包含整个数据库表的表单。
  2. 更改整个数据库表的数据
  3. 更新此表的数据库数据

到现在为止我都得到了这个,但是当我想更新记录时我被卡住了。


<form method="post">
<input type="hidden" name="form_hidden" value="Y">
<table>
<tbody>
        <?php 
        global $wpdb;
        $post_id = $wpdb->get_results("SELECT * FROM tbl_name ORDER BY id ASC"); 
        foreach($post_id as $row){ 
        echo    '<tr><td>' . $row->id . '</td><td><input type="text" name="' . $row->name . '" value="' . $row->name . '" /></td></tr>';
        }

        ?>
</tbody>
</table>
<input type="submit" name="Submit" value="Update Options" />
</form>


<?php


if($_POST['form_hidden'] == 'Y') {
    //update database
    global $wpdb;

        foreach($_POST['name'] as $item){
                $wpdb->replace( 'tbl_name',  ); // <- some kind of array here
        }


}

【问题讨论】:

  • 你能告诉我们预期的输出吗?

标签: php mysql database wordpress forms


【解决方案1】:

我猜有多个问题。

  1. wpdb::replace(...) 用 ONE 值替换所有行的列; 这不是你想要的,对吗?
  2. 要更新表中的正确行,您应该参考相应的主键。我猜你的情况是“id”。
  3. 要将表单中的多个值存储为“数组”,您必须使用像“name[]”这样的字段名称。

让我们把它们放在一起:

// in your form creation loop...
foreach($post_id as $row){ 
    echo '<tr><td><input type="text" name="id[]" value="' . $row->id . '" /></td><td><input type="text" name="name[]" value="' . $row->name . '" /></td></tr>';
}

// processing the new values
foreach($_POST['id'] as $I => $id) {
    $sql = $wpdb->prepare("UPDATE tbl_name SET name=%s where id=%d"
        , $_POST['name'][$I]
        , $id
        );
    $wpdb->query($sql);
}

这些只是有趣的部分 - 只需将其与您现有的代码结合起来即可。见

有用的链接:

https://developer.wordpress.org/reference/classes/wpdb/prepare/

https://developer.wordpress.org/reference/classes/wpdb/query/

https://www.php.net/manual/en/faq.html.php

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 2018-12-06
    • 1970-01-01
    相关资源
    最近更新 更多