我如何分配一个php返回值而不导致我的sql运行两次


How can I assign a php return value without causing my sql to run twice?

我正在制作一个处理表单的wordpress插件。

我有一个表单,在提交时,调用一个函数将值插入到DB中。

从该函数中,我返回了自动递增的clientID值。

然后将返回值赋给同一页面上新表单中的新变量。

它工作,但我现在得到两个DB插入。似乎当我将新的变量赋值给函数时,它会运行两次插入语句。

我想要完成的是将用户插入到函数中的第一个表中,并返回客户端ID,这样我就可以将ID用于另一个表插入。

如有任何帮助,不胜感激。

提交时调用函数插入数据库的表单

<form action="" id="new_client_form" method="POST" onsubmit="return submit_new_client()">

包含DB代码并返回Client ID的函数

function submit_new_client () {
if (isset($_POST['submit'])) {
      /////
    $insertClient = $db -> exec("INSERT INTO client SET .......");
    $clientId = $db -> lastInsertId();
    echo $clientId .'Is the New client ID';//This is printing the correct ID(used for testing)
}
return $clientId;
}
add_action('init', 'submit_new_client');

新形式/我将变量赋值给函数

<?php
  $client = submit_new_client();
  if(isset($_POST['submit'])) {
    echo "<p>The Client Id is</p>";
      echo "$client";
    } else {
     echo "<p>No client ID</p>";
     }
 ?>

例如,一旦提交了表单,我将从函数中得到一个Echo,说客户端ID是32。但是当我进入下一个表单时它会显示客户端ID是33

首先,在HTML表单中,您有onsubmit="return submit_new_client()onsubmit属性用于调用Javascript函数,而不是PHP函数,所以我很惊讶PHP函数会被调用。

你能完整地发布代码吗?

编辑:我对你正在调用的add_action函数做了一个简短的搜索。您确定这个调用在某个时刻没有调用submit_new_client()函数吗?请参阅我在这里找到的文档:https://codex.wordpress.org/Function_Reference/add_action