仅更新/插入数据库表的一列

时间:2020-02-14 作者:Nimesh

我的WordPress表命名为wp\\u fes\\u vendors,共有12列。

在这12列中,我只想更新列名的数据requests

我获取的此列数据来自后端中存储在中的自定义表单$_POST[\'getval\']

这是我试过的代码

 if (!empty(isset($_POST[\'getval\'])))
    {       
            global $wpdb;
            $table_name=$wpdb->prefix.\'fes_vendors\';

            $data_array = array(

            \'requests\' => $_POST[\'getval\']


            );

            $data_where = array(\'requests\' => $_POST[\'getval\']);

            $wpdb->update($table_name,$data_array,$data_where);


    }
Html

<form id="myForm" name="myform" action="" method="POST" style="padding:20px;">
  <label> Select if this Vendor wishes to receive customer requests or not: </label>
  <select name="getval" id="brandSel" size="1">
      <option selected="selected" disbaled value="">-- Select status --</option>
      <option value="1">Enable</option>
      <option value="0">Disable</option>
  </select>

  <?php submit_button(\'submit\'); ?>
</form>
我尝试了几次,但数据没有保存/更新。这是db的图片

enter image description here

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

您正在使用$wpdb->where() 不正确。

在代码中,$data_array$data_where 都是一样的,所以如果我们假设$_POST[\'getval\']1, 生成的查询将是:

UPDATE wp_fes_vendors SET requests=1 WHERE requests=1
你知道这有什么意义吗?它正在设置requests 列收件人1 对于所有行,其中requests 已经是1. 这是一个永远不会做任何事情的查询。

正确的使用方法$wpdb->where() 就是要确保$data_array 包含列名以及要将其设置为的新值,而$data_where 应包含用于标识应更新的行的列和值。

例如,如果要设置requests1 对于ID为的供应商5, 我需要这样做:

$data_array = array(
    \'requests\' => 1
);

$data_where = array(
    \'id\' => 5
);

$wpdb->update( $table_name, $data_array, $data_where );
该查询的结果将是:

UPDATE wp_fes_vendors SET requests=` WHERE id=5
这意味着在表单中,您需要发布列的新值以及需要更新的供应商ID。

相关推荐

Wordpress database connection

我的网站被黑了,我已经把所有东西都加载了,但是页面、帖子、图片等都没有显示在网站上。我注意到在我的数据库ameqt\\u wp507中有一个列表,上面写着wp\\u 507posts等,还有一个列表写着wp6t\\u posts等。其中包含wp6t的一个包含了所有内容。我如何让它看到这些信息?ThanksSarah公司