php 数据不插入WordPress数据库

ki0zmccv  于 2023-04-10  发布在  PHP
关注(0)|答案(4)|浏览(155)

我正在使用下面的代码来插入数据int我的WordPress数据库.此代码不能正常工作,当我插入数据时,它显示相同的页面和数据没有被插入到数据库.

<?php get_header(); ?>
<div class="content">
    <form>
        Job Title: <input type="text" name="jtitle"><br><br>
        Job Link: <input type="text" name="jlink"><br><br>
        Job Last date: <input type="text" name="jld"><br><br>
        <input type="submit" value="Add Job" name="insert"><br><br>
    </form>
    <?php
    if (isset($_POST['insert'])) {
        $jt=$_POST['jtitle'];
        $jl=$_POST['jlink'];
        $jld=$_POST['jld'];

        global $wpdb;
        $sql=$wpdb->insert("wp_job",array("jtitle"=>$jt,"jlink"=>$jl,"jld"=>$jld));
        if ($sql==true) {
            echo "<script>alert('New Job Added')</script>";
        }
        else {

            echo "<script>alert('New Job Not Added!')</script>";
        }
    }
?>
</div><!-- .content /-->
nlejzf6q

nlejzf6q1#

您提交表单时没有指定method属性,需要定义method=“post”通过isset($_POST ['insert'])获取数据,也可以使用$_REQUEST获取所有数据,但我建议您定义actionmethod*属性**。
这里还可以看到默认的表单方法是GETx 1 e0f1x
祝你好运谢谢

kokeuurv

kokeuurv2#

您正在使用默认的HTTP GET方法而不是POST方法提交表单数据。由于HTML表单标记没有指定提交方法,因此默认为GET而不是POST。
将HTML中的表单标记更改为<form method="POST">,或者在PHP中将$_POST值更改为$_GET
如果你需要的话,这里有一些HTML 5表单的文档https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-action
PS:你不需要检查变量$_POST['insert']是否设置为提交。你可以只做isset($_POST)来查看是否有表单数据被提交。
祝你好运!

hfsqlsce

hfsqlsce3#

您需要在表单标签中添加值为“Post”的“action”属性

<div class="content">
<?php
    if (isset($_POST['insert'])) {
        global $wpdb;
        $wp_job = $wp_prefix.'job';
        $jt = $_POST['jtitle'];
        $jl = $_POST['jlink'];
        $jld = $_POST['jld'];
        $sql = $wpdb->insert( $wp_job , array( "jtitle"=>$jt, "jlink"=>$jl, "jld"=>$jld ) );
        if ($sql==true) {
            echo "<script>alert('New Job Added')</script>";
        }
        else {
            echo "<script>alert('New Job Not Added!')</script>";
        }
    }
?>
<form method="post" action="">
    Job Title: <input type="text" name="jtitle"><br><br>
    Job Link: <input type="text" name="jlink"><br><br>
    Job Last date: <input type="text" name="jld"><br><br>
    <input type="submit" value="Add Job" name="insert"><br><br>
</form>
</div><!-- .content /-->

测试和作品。谢谢

q3aa0525

q3aa05254#

如果你使用WordPress,你需要用WordPress的方式处理POST请求

From:
<form> 

To:
<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" 
method="post">

/* add this line somewhere in between the <form> tag. */
   <input type="hidden" name="action" value="job_form">

/* Open up functions.php of your current theme and add these lines in: */

function addNewJob() {
 /**
* At this point, $_GET/$_POST variable are available
 * eg: $jld = $_POST['jld'];
 *
* We can do our normal processing here
 */ 

}
add_action( 'admin_post_nopriv_job_form', 'addNewJob` );
add_action( 'admin_post_job_form', 'addNewJob` );

相关问题