1

背景:我有一个由 cpanel 管理的基本 myslq 数据库结构的 wordpress 安装。我已经实现了重力表单插件来生成一种联系我们的表单。如果客户对产品有疑问/投诉,他们会填写表格并提交。然后这将进入我在 wp 数据库中创建的自定义表(wp-contacts)。我使用 ODBC 连接器将表中的数据与 Filemaker 连接起来。然后,我们的客户服务团队可以在我们开发的自定义文件制作器应用程序中查看数据,他们可以回答问题。

问题:我的 PHP 脚本存在问题,该脚本应该将重力从客户的数据输入发送到我创建的自定义 sql 表。当我测试 from 并输入示例数据并单击提交时,我收到此页面无法显示错误。此外,我创建的自定义表中没有数据。还有验证码的问题。我已经在重力形式中实现了验证码,所以如果检查了验证码,我会假设我需要某种字段设置为 1 或 0?实现这一点的最佳方法是什么?这是我的脚本:

add_action("gform_after_submission_1", "input_fields", 10, 2);
function input_fields($entry, $form)
{
    global $rhodesba_rhodes;

        $entry["12"] = '$fname';
        $entry["14"] = '$lname';
        $entry["4"] = '$email';
        $entry["5"] = '$address1';
        $entry["15"] = '$address2';
        $entry["16"] = '$city';
        $entry["18"] = '$state';
        $entry["17"] = '$zip';
        $entry["7"] = '$bbd';
        $entry["6"] = '$upc';
        $entry["10"] = '$subject';
        $entry["2"] = '$question';

    $SQL = "INSERT INTO wp_contacts (id, name, last_name, state, city, address, address_2, bbd, subscribe, upc, email, subject, comments, phone, user_ip, answer, answered_by, zipcode, category_id, active, contact_captcha, answered_date, dept, computer_name, created) VALUES ('', '$fname', '$lname', '$state', '$city', '$address1', '$address2', '$bbd', '', '$upc', '$email', '$subject', '$question', '', '', '', '', '$zip', '', '', '', '', '', '', '')";
    $rhodesba_rhodes->query($SQL);
}

我的表格中有一些字段不是通过重力表格与我们联系表格填充的。相反,这些字段由我们的客户服务器团队在他们的 filemaker 应用程序中回答问题(即 answer、answered_by 等)时进行操作,并由 filemaker 用于其他目的。对于这些字段,我使用了占位符 ''。对于添加的每条记录,我的 ID 字段设置为自动递增。
数据库结构图

4

1 回答 1

2

所以,经过一番研究,我明白了这一点。我发布解决方案以防其他人有同样的问题。这是我更新的代码:

add_action("gform_after_submission_1", "input_fields", 10, 2);
function input_fields($entry, $form)
    {
        $password = "password";
        $username = "username";
        $servername = "localhost";
        $dbname = "db";
        $fname = $entry["12.3"];
        $lname = $entry["14.6"];
        $email = $entry["4"];
        $address1 = $entry["5.1"];
        $address2 = $entry["15.2"];
        $city = $entry["16.3"];
        $state = $entry["18.4"];
        $zip = $entry["17.5"];
        $bbd = $entry["7"];
        $upc = $entry["6"];
        $subject = $entry["10"];
        $question = $entry["2"];

$con=mysqli_connect($servername, $username, $password, $dbname);
mysqli_query($con,"INSERT INTO wp_contacts (id, name, last_name, state, city, address, address_2, bbd, subscribe, upc, email, subject, comments, phone, user_ip, answer, answered_by, zipcode, category_id, active, contact_captcha, answered_date, dept, computer_name, created) VALUES ('', '$fname', '$lname', '$state', '$city', '$address1', '$address2', '$bbd', '', '$upc', '$email', '$subject', '$question', '', '', '', '', '$zip', '', '', '', '', '', '', '')");
    }

我的第一个问题是我以相反的方式分配了变量声明。

$entry["12"] = $fname //WRONG
$fname = $entry["12"] //RIGHT

处理完这件事后,我开始将数据填充到 mysql 表中,但是,只有某些字段在填充。经过进一步调查,我注意到用于访问 $entry 的 ID 不正确。为了获得正确的 id,我右键单击浏览器中的每个字段并检查该元素。这向我展示了这样的名称属性:name="input_1.3"。“input_”前缀后面的数字是用于 $entry 的 id。我更改了错误的 id,现在数据可以完美发布。

我也用它来连接数据库:

mysqli_connect

如果有人有类似的问题,希望这会有所帮助。

于 2017-11-03T16:18:26.733 回答