安装在函数内部时,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 rows
Docs
同样在你的sn-p中,你设置的'id' => 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->update()
$wpdb->query($wpdb->prepare("UPDATE $table_name SET tvalue='1' WHERE id=%d", 1));
【讨论】:
它仍然无法正常工作。我想要工作的这个原始 sql 代码:UPDATEGen3
SET tvalue
='1' WHERE 25
@Entity_45 你的意思是WHERE id = 25
请在您的答案中添加一些解释,以便其他人可以从中学习。你做了什么改变,为什么?以上是关于安装在函数内部时,Wordpress $wpdb 更新不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
使用变量时的 Wordpress 数据库查询 ($wpdb) 错误