使用 WPDB 连接到外部数据库,以便使用 php 插入动态表单数据



我有一个外部数据库,我希望将表单数据与$wpdb一起插入其中。在表单所在的页面上,我可以将$wpdb声明为全局,然后执行 newdb 来提取结果并将它们回显到我的表单中。

此代码当前有效:

<?php
global $wpdb;
$member_id = SwpmMemberUtils::get_logged_in_members_id();
$field_name = 'user_name';
$fname_value = SwpmMemberUtils::get_member_field_by_id($member_id, $field_name); 
$newdb = new wpdb( 'user' , 'pass' , 'database' , 'localhost' );
$newdb->show_errors();
$results = $newdb->get_results($wpdb->prepare("SELECT * FROM member_lists WHERE username = %s",$fname_value));
?>

对于提交表单操作,我有一个名为 update-list 的 PHP 文件.php我在我的主题子文件夹中有它来插入我的帖子数据,但该数据不起作用。我收到此错误:

致命错误:

未捕获错误:在/home/site/www/www/home/wp-content/themes/Avada-child/update-list.php:4 中找不到类"wpdb" 堆栈跟踪:#0 {main} 扔在第 4 行的/home/site/www/www/home/wp-content/themes/Avada-child/update-list.php

以下是该更新列表.php文件的代码:

<?php
global $wpdb;
$newdb = new wpdb( 'user' , 'pass' , 'database' , 'localhost' );
$stats = array();
for( $i = 0; $i <= $stats; $i++ ) 
{
$stats[] = array(
'username' => $_POST['username'],
'first_name' => $_POST['first_name'],
'last_name' => $_POST['last_name'],
'county' => $_POST['county'],
'street' => $_POST['street'],
'city' => $_POST['city'],
'ward' => $_POST['precinct'], 
);
}
foreach ( $stats as $stat )
$newdb=$wpdb->insert( 'member_lists', $stat );

?>

为什么它可以识别带有我的表单的页面上的 wpdb,但在表单操作更新列表.php文件中却无法识别

这听起来像是你应该使用AJAX的东西(这将消除手头的问题(。

话虽如此,你的问题是因为你正在发布到一个不了解WordPress任意PHP文件。由于它没有使用WordPress方法加载到请求中,因此您需要自己加载WordPress。看看这个WPSE答案。

基本上,至少,您需要在update-list.php文件的顶部添加require_once '/path/to/your/wp-load.php';,然后才能使用任何"WordPress",包括$wpdb

最新更新