繁体   English   中英

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

[英]Using WPDB to connect to external database for inserting dynamic form data with 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

这是该 update-list.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 而在表单操作 update-list.php 文件中不识别?

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

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

基本上,您至少需要添加require_once '/path/to/your/wp-load.php'; 在您可以使用任何“WordPress”(包括$wpdb之前,在update-list.php文件的顶部。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM