安装在函数内部时,Wordpress $wpdb 更新不起作用?

Posted

技术标签:

【中文标题】安装在函数内部时,Wordpress $wpdb 更新不起作用?【英文标题】:Wordpress $wpdb update not working when mounted inside function? 【发布时间】:2021-11-28 08:46:23 【问题描述】:
$wpdb-> update('Gen3', array( 'tvalue' => "1"), array('id' => 1));

表:

id name tvalue
25 #25 0

我想将 tvalue 更改为 1。但我的代码无法正常工作。

我尝试了很多选项,但它们都不起作用。

这是我的完整代码:

add_action( 'wp_footer', 'mycustom_wp_footer' );

    function mycustom_wp_footer() 
        ?>
        <script type="text/javascript">
            var wpcf7Elm = document.querySelectorAll( '.wpcf7' );
            wpcf7Elm.forEach(function(formr)
            formr.addEventListener( 'wpcf7submit', function( event ) 
                    //if ('wpcf7-f101-p97-o1' == event.detail.unitTag) 

                        $wpdb->update(
                          'Gen3', // This should be the name of your table
                          array(
                            'tvalue' => '1',  // string with quotation  // integer (number) without quotation
                          ),
                          array('ID' => 25), // The id of the row you're trying to update
                          array(
                            '%s'   // The format of the value you're trying to update. // Use '%d' if it's a number
                          ),
                          array('%d') // The format of the where clause which is the id of the row you're trying to update
                        );
                                            //
                    //var idform = event.detail.unitTag;
                    //alert (idform);
            , false ); )
        </script>
        <?php
    

【问题讨论】:

请分享更多细节。该代码看起来不像是有效的 PHP 代码,因为 $wpdb 不是 JS 变量 这是代码形式的functions.php。当点击表单内的按钮时,它应该更新数据库, 嗯,不会的,因为你不能在 JS 代码中调用 PHP 函数 是的,我刚刚发现了。不知道这件事。我将尝试找到如何将其结合起来的方法。还是谢谢你。 【参考方案1】:

我强烈建议先阅读“文档”。它会更快地解决您的问题。都在这里:

UPDATE rowsDocs

同样在你的sn-p中,你设置的'id' =&gt; 1根据你提供的表格是不正确的,你感兴趣的id是25

还要确保您对查询中的值使用了正确的格式。正确使用'%s''%d'很重要,否则就不行了!

注意,我根据文档页面将您所在行的ID大写,如果不行,则使用小写id

$wpdb->update(
  'Gen3', // This should be the name of your table
  array(
    'tvalue' => '1',  // string with quotation  // integer (number) without quotation
  ),
  array('ID' => 25), // The id of the row you're trying to update
  array(
    '%s'   // The format of the value you're trying to update. // Use '%d' if it's a number
  ),
  array('%d') // The format of the where clause which is the id of the row you're trying to update
);

如果你能让它工作,请告诉我!

【讨论】:

我发现了问题。这不是它自己的代码。问题是 php 代码不能在 Js 中。无论如何,谢谢你的帮助! 很高兴你发现了这个错误!在我提供答案时,您没有提到任何有关您的 javascript sn-p 的信息。这甚至不是你问题的一部分。很高兴你的问题解决了!【参考方案2】:

用这个代替$wpdb-&gt;update()

$wpdb->query($wpdb->prepare("UPDATE $table_name SET tvalue='1' WHERE id=%d", 1));

【讨论】:

它仍然无法正常工作。我想要工作的这个原始 sql 代码:UPDATE Gen3 SET tvalue='1' WHERE 25 @Entity_45 你的意思是WHERE id = 25 请在您的答案中添加一些解释,以便其他人可以从中学习。你做了什么改变,为什么?

以上是关于安装在函数内部时,Wordpress $wpdb 更新不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

wordpress 常用函数-wpdb类

Wordpress 全局 $wpdb 函数问题

使用变量时的 Wordpress 数据库查询 ($wpdb) 错误

使用 PHI 信息进行 SQL 调用时,WordPress $wpdb 对象是不是安全?

带有数据库(mysql)查询的 WordPress 插件

Wordpress 多用户、自定义数据库、使用全局 wpdb 时潜在的并发问题