数据未插入WordPress数据库



我正在使用以下代码在我的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 /-->

您在提交表单时没有指定方法属性,您应该定义method="post">以通过 isset($_POST['insert']( 获取数据,或者您也可以使用 $_REQUEST 获取所有数据,但我建议您定义操作方法属性

在这里您还可以看到默认的表单方法是 GET 默认形式的HTTP方法是什么?

祝你好运 谢谢

您使用默认的 HTTP GET 方法而不是 POST 方法提交表单数据。由于您的 HTML 表单标记未指定提交方法,因此默认为 GET 而不是 POST。

将 HTML 中的表单标记更改为<form method="POST">,或者在 PHP 中将$_POST值更改为$_GET

如果您需要 https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-action,这里有更多关于 HTML 5 表单的文档

PS:你不需要检查变量$_POST['insert']它是否设置为提交。您只需执行isset($_POST)即可查看是否已提交任何表单数据。

祝你好运!

您需要在表单标签中添加值为"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 /-->

经过测试并工作。 谢谢

如果你在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` );

最新更新