Wordpress自定义PHP在wpdb对象处失败

Wordpress自定义PHP在wpdb对象处失败,php,forms,web,wordpress,Php,Forms,Web,Wordpress,我试图在wordpress上创建一个表单,自动更新数据库中的自定义表。表单使用“POST”方法并调用PHP文件fine,我在开始时输入的任何代码(如echos)都可以正常工作。问题是每次我尝试使用wpdb对象时,屏幕都是白色的,代码停止。它不会运行任何东西,包括或超过我调用wpdb的位置。我尝试过使用insert和get results,但两者都不起作用。此外,即使我打开了调试和所有操作,我在控制台输出中也没有收到任何错误 <?php global $wpdb;

我试图在wordpress上创建一个表单,自动更新数据库中的自定义表。表单使用“POST”方法并调用PHP文件fine,我在开始时输入的任何代码(如echos)都可以正常工作。问题是每次我尝试使用wpdb对象时,屏幕都是白色的,代码停止。它不会运行任何东西,包括或超过我调用wpdb的位置。我尝试过使用insert和get results,但两者都不起作用。此外,即使我打开了调试和所有操作,我在控制台输出中也没有收到任何错误

<?php
        global $wpdb;
        error_reporting(E_ALL);
        echo "New Plant has been submitted.\n";

        $plantname = $_POST["name"];
        echo "Before";
        $myrows = $wpdb->get_results( "SELECT * FROM wp_users" );
        exit( var_dump( $wpdb->last_query ) );
        echo " After: " . $myrows;
        $wpdb->insert('Plants',array('PlantName' => $plantname),array('%s'));
        echo $plantname . " has been submitted.";
?>

</body>
</html>
这是我的php文件(权限值为755):

<?php
        global $wpdb;
        error_reporting(E_ALL);
        echo "New Plant has been submitted.\n";

        $plantname = $_POST["name"];
        echo "Before";
        $myrows = $wpdb->get_results( "SELECT * FROM wp_users" );
        exit( var_dump( $wpdb->last_query ) );
        echo " After: " . $myrows;
        $wpdb->insert('Plants',array('PlantName' => $plantname),array('%s'));
        echo $plantname . " has been submitted.";
?>

</body>
</html>

另外,这是我的表格:

<?php
        global $wpdb;
        error_reporting(E_ALL);
        echo "New Plant has been submitted.\n";

        $plantname = $_POST["name"];
        echo "Before";
        $myrows = $wpdb->get_results( "SELECT * FROM wp_users" );
        exit( var_dump( $wpdb->last_query ) );
        echo " After: " . $myrows;
        $wpdb->insert('Plants',array('PlantName' => $plantname),array('%s'));
        echo $plantname . " has been submitted.";
?>

</body>
</html>
&nbsp;

<form action="cgi-bin/add_plant.php" method="post">
Plant Name: <input name="name" type="text" />

Lowest Ideal Temperature: <input name="IdealTempLow" type="text" />

Highest Ideal Temperature: <input name="IdealTempHigh" type="text" />

Lowest Ideal pH: <input name="IdealpHLow" type="text" />

Highest Ideal pH: <input name="IdealpHHigh" type="text" />

Lowest Ideal Humidity Level: <input name="IdealHumLow" type="text" />

Highest Ideal Humidity Level: <input name="IdealHumHigh" type="text" />

Lowest Ideal Moisture Level: <input name="IdealMoistLow" type="text" />

Highest Ideal Moisture Level: <input name="IdealMoistHigh" type="text" />

<input type="submit" />
</form>&nbsp;

工厂名称:
最低理想温度:
最高理想温度:
最低理想pH值:
最高理想pH值:
最低理想湿度水平:
最高理想湿度水平:
最低理想湿度:
最高理想湿度水平:
顺便说一句,我知道我需要清理我的代码,但现在我只想让它在第一时间工作。我知道没有添加任何内容,因为我登录到PHPMyAdmin,表中没有任何内容。我还尝试从标准wp表中获取结果,但也失败了

<?php
        global $wpdb;
        error_reporting(E_ALL);
        echo "New Plant has been submitted.\n";

        $plantname = $_POST["name"];
        echo "Before";
        $myrows = $wpdb->get_results( "SELECT * FROM wp_users" );
        exit( var_dump( $wpdb->last_query ) );
        echo " After: " . $myrows;
        $wpdb->insert('Plants',array('PlantName' => $plantname),array('%s'));
        echo $plantname . " has been submitted.";
?>

</body>
</html>
编辑1

<?php
        global $wpdb;
        error_reporting(E_ALL);
        echo "New Plant has been submitted.\n";

        $plantname = $_POST["name"];
        echo "Before";
        $myrows = $wpdb->get_results( "SELECT * FROM wp_users" );
        exit( var_dump( $wpdb->last_query ) );
        echo " After: " . $myrows;
        $wpdb->insert('Plants',array('PlantName' => $plantname),array('%s'));
        echo $plantname . " has been submitted.";
?>

</body>
</html>
我已将所有内容移动到自定义模板文件中。我将它与单独的php文件一起使用,但我移动了它,这样我就可以在不切换页面的情况下进行表单验证和所有操作。然而,现在我有同样的错误。我曾使用“require_once”将wp-load.php包含在原始文件中,它成功了,但是现在wpdb仍然失败,我无法想出如何在不失败的情况下包含wp-load。最初加载页面工作:我可以提交表单,但提交页面失败

<?php
        global $wpdb;
        error_reporting(E_ALL);
        echo "New Plant has been submitted.\n";

        $plantname = $_POST["name"];
        echo "Before";
        $myrows = $wpdb->get_results( "SELECT * FROM wp_users" );
        exit( var_dump( $wpdb->last_query ) );
        echo " After: " . $myrows;
        $wpdb->insert('Plants',array('PlantName' => $plantname),array('%s'));
        echo $plantname . " has been submitted.";
?>

</body>
</html>
<?php
    require_once(ABSPATH . '/wp-config.php');
    require_once(ABSPATH . '/wp-load.php');
?>
<?php global $asteria;?>

<?php 
    get_header();
?>

<?php global $wpdb;?>

<?php
    function test_input($data) 
    {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }

    function selfURL()
    {
        $ret = substr(strtolower($_SERVER['SERVER_PROTOCOL']),0,strpos( strtolower($_SERVER['SERVER_PROTOCOL' ]), "/") );
        $ret .= ( empty($_SERVER['HTTPS']) ? NULL : ( ($_SERVER['HTTPS'] == "on") ? "s" : NULL) );
        $ret .= "://" . $_SERVER['SERVER_NAME'];
        $ret .= ( $_SERVER['SERVER_PORT'] == 80 ? "" : ":".$_SERVER['SERVER_PORT'] ); 
        $ret .= $_SERVER['REQUEST_URI'];

        return $ret;
    }

    function submitPlant($a, $b, $c, $d, $e, $f, $g, $h, $i)
    {
        $wpdb->show_errors();
        // $wpdb->replace('Plants',
        //  array(
        //      'PlantName' => $a,
        //      'IdealTempLow' => $b,
        //      'IdealTempHigh' => $c,
        //      'IdealPHLow' => $d,
        //      'IdealPHHigh' => $e,
        //      'IdealHumidityLow' => $f,
        //      'IdealHumidityHigh' => $g,
        //      'IdealMoistureLow' => $h,
        //      'IdealMoistureHigh' => $i
        //      ),
        //  array(
        //      '%s',
        //      '%f',
        //      '%f',
        //      '%f',
        //      '%f',
        //      '%f',
        //      '%f',
        //      '%f',
        //      '%f'
        //      )
        //  );
        // $a = $wpdb->insert_id;
        // if ($a == false) {
        //  $SubmitMsg = "Plant entry failed. Please contact system admin.";
        //  echo "Error: " . $wpdb->print_error();
        // } else {
            $SubmitMsg = "New Plant has been submitted.";
        // }
        return $SubmitMsg;
    }

... Validation Functions...
?>

<?php
$PlantName = $IdealTempLow = $IdealTempHigh = $IdealpHLow = $IdealpHHigh = $IdealHumLow = $IdealHumHigh = $IdealMoistLow = $IdealMoistHigh = "";

$NameErr = $LTempErr = $HTempErr = $LpHErr = $HpHErr = $LHumErr = $HHumErr = $LMoistErr = $HMoistErr = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $SubmitMsg = "";

...Form Validation...

    if (($NameErr == "") && ($LTempErr == "") && ($HTempErr == "") && ($LpHErr == "") && ($HpHErr == "") && ($LHumErr == "") && ($HHumErr == "") && ($LMoistErr == "") && ($HMoistErr == ""))
    {
        $SubmitMsg = submitPlant($PlantName, $IdealTempLow, $IdealTempHigh, $IdealpHLow, $IdealpHHigh, $IdealHumLow, $IdealHumHigh, $IdealMoistLow, $IdealMoistHigh);
    }

}
?>

<!--Content-->
<div class="fixed_site">
    <div class="fixed_wrap singlefx">
        <?php if(($asteria['page_type_id']) == '1'){ ?>
            <div class="page_tt">
                <div class="center"><h1 class="postitle"><?php the_title(); ?></h1></div>
            </div> 
        <?php } ?>

<div id="content">
<div class="center">
<div class="single_wrap no_sidebar">
<div class="single_post">
    <?php if(have_posts()): ?>
        <?php while(have_posts()): ?><?php the_post(); ?>
            <div <?php post_class(); ?> id="post-<?php the_ID(); ?>">  

                <?php if ( is_user_logged_in() || is_admin() ) { ?><div class="edit_wrap"><a href="<?php echo get_edit_post_link( ); ?>"><i title="<?php _e('Edit This','asteria'); ?>" class="fa-edit"></i></a></div><?php } ?>

                    <div class="single_post_content">
                        <?php if(($asteria['page_type_id']) == '2'){ ?><h1 class="postitle"><?php the_title(); ?></h1><?php } ?>
                            <div class="thn_post_wrap"><?php the_content(); ?> </div> 
                            <div style="clear:both"></div>
                            <div class="thn_post_wrap"><?php wp_link_pages('<p class="pages"><strong>'.__('Pages:').'</strong> ', '</p>', 'number'); ?></div>
                    </div>
            </div>
        <?php endwhile ?> 
</div>
    <?php endif ?>

    <span style="color:blue"><?php echo $SubmitMsg;?></span>
    <form action="<?php echo selfURL(); ?>" method="POST">

    Plant Name: <input name="PlantName" type="text" value="<?php echo $PlantName;?>"/><span style="color:red"> * <?php echo $NameErr;?></span>
    </br><div height="5">&nbsp;</div>

    Lowest Ideal Temperature: <input name="IdealTempLow" type="text" value="<?php echo $IdealTempLow;?>"/><span style="color:red"> * <?php echo $LTempErr;?></span>
    </br><div height="5">&nbsp;</div>

    Highest Ideal Temperature: <input name="IdealTempHigh" type="text" value="<?php echo $IdealTempHigh;?>"/><span style="color:red"> * <?php echo $HTempErr;?></span>
    </br><div height="5">&nbsp;</div>

    Lowest Ideal pH: <input name="IdealpHLow" type="text" value="<?php echo $IdealpHLow;?>"/><span style="color:red"> * <?php echo $LpHErr;?></span>
    </br><div height="5">&nbsp;</div>

    Highest Ideal pH: <input name="IdealpHHigh" type="text" value="<?php echo $IdealpHHigh;?>"/><span style="color:red"> * <?php echo $HpHErr;?></span>
    </br><div height="5">&nbsp;</div>

    Lowest Ideal Humidity Level: <input name="IdealHumLow" type="text" value="<?php echo $IdealHumLow;?>"/><span style="color:red"> * <?php echo $LHumErr;?></span>
    </br><div height="5">&nbsp;</div>

    Highest Ideal Humidity Level: <input name="IdealHumHigh" type="text" value="<?php echo $IdealHumHigh;?>"/><span style="color:red"> * <?php echo $HHumErr;?></span>
    </br><div height="5">&nbsp;</div>

    Lowest Ideal Moisture Level: <input name="IdealMoistLow" type="text" value="<?php echo $IdealMoistLow;?>"/><span style="color:red"> * <?php echo $LMoistErr;?></span>
    </br><div height="5">&nbsp;</div>

    Highest Ideal Moisture Level: <input name="IdealMoistHigh" type="text" value="<?php echo $IdealMoistHigh;?>"/><span style="color:red"> * <?php echo $HMoistErr;?></span>
    </br><div height="5">&nbsp;</div>

    <input type="submit" name="submitted"/>
    </form>

</div>

<!--PAGE END-->
</div>
</div>
</div>
</div>
<?php get_footer(); ?>


您必须关闭php错误$wpdb在独立的php页面中不可用,除非包含wp load。你当然可以用mysqli来代替。谢谢。现在代码没有失败,也没有给出任何错误,但它只是没有更新表。您使用的是相同的代码还是进行了更改?上面的代码中有一个出口。我更新了代码,使其在特定页面的自定义主题模板中运行,以便我可以执行表单验证,并将所有内容保持在同一页面上。我已经让它使用单独的页面,但是现在它不想这样工作。