它不会给出错误,但不会在数据库中插入

时间:2018-05-24 16:14:49

标签: php html mysql ajax wordpress

我在页面上有这个表单和脚本:

<section class="hide-section" id="produto_1"> 
<form class="form-validate" id="feedback_form">
    <div class="campo">
        <fieldset> 
            <h1>
                <legend>
                    <center>
                        <strong>Produtos de Higiene</strong>
            </center>
        </h1><br> 
        </div>
        <fieldset class="grupo">
    <div class="campo">
            <strong><label for="Nome do Produto">Nome do Produto</label></strong> 
            <input type="text" id="DescricaoProd" name="DescricaoProd" required="" style="width:350px">
        </div>
    <div class="campo"> 
        <strong><label for="Unidade">Unidade</label></strong> 
            <input type="text" id="DescricaoUnid" name="DescricaoUnid" style="width:160px" required="" size="120">
        </div>
        </fieldset>
        <button class="btn btn-success btn_contact" type="button">Registo</button>
</form>
</section> 

<script type="text/javascript"> 
$(".btn_contact").click(function () {

                $.ajax({
                    type: "POST",
                    url: "./inserir",
                    data: $("#feedback_form").serialize(), // serializes the form's elements.
                    success: function (data)
                    {
                        if ($.trim(data) == 'true') {
                            $("#feedback_form").find('input').val(''); //clear text
                           dataType: "json",
                            $(".success_messages").removeClass('hide'); // success message
                        } else {
                            $(".error_message").removeClass('hide'); // error message
                        }
                    }
                });

            });
</script>

在插入页面上我有这个PHP代码:

$name = isset($_POST["DescricaoProd"]) ? $_POST["DescricaoProd"] : '';
$unid = isset($_POST["DescricaoUnid"]) ? $_POST["DescricaoUnid"] : '';

if (!empty($name) && !empty($unid)) {  
   echo json_encode("true");
} else {
    echo json_encode("false");
}

$conn = new mysqli ("localhost", "USUARIO", "SENHA", "nome_DB");

$sql = "INSERT INTO ProdHigieneteste (DescricaoProd,DescricaoUnid) 
VALUES ('$name','$unid')";
if ($conn->query($sql)) { // check for === TRUE is not necessary
   // either put the second query in here, or just enjoy the success
} else {
   // get the error, throw a message...
}

$sql1 = "INSERT INTO StockHigieneteste (DescricaoProd,DescricaoUnid) 
VALUES ('$name','$unid')";

$query = mysqli_query($conn, "SELECT * FROM StockHigieneteste");

if ($conn->query($sql1) === TRUE) {
    //Count total number of rows
    $rowCount = $query->num_rows;
} else {
    // get the error, throw a message...
}
$conn->close();

代码工作正常,就像将其插入数据库表一样,但现在它正在检查清理输入的部分并且尚未插入数据库表,但它也没有在控制台中给出任何错误。任何人都可以帮助确定问题吗?

当我把代码的开头放在这一部分时:

ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
error_reporting(E_ALL);

出现错误信息,因此不再更改为插入,应该为真。

如果你这样做:

var_dump ($name);
var_dump ($unid);

返回:

  

string(0)“”string(0)“”“false”

变量没有收到价值

1 个答案:

答案 0 :(得分:1)

请使用wordpress标准AJAX

add_action( 'init', 'my_script_enqueuer' );
function my_script_enqueuer() {
   wp_localize_script( 'my_voter_script', 'myAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));
   wp_enqueue_script( 'my_voter_script' );

}

add_action("wp_ajax_custom_function", "my_custom_function");
add_action("wp_ajax_nopriv_custom_function", "my_custom_function");

function my_custom_function()
{
    global $wpdb;

    $name = isset($_POST["DescricaoProd"]) ? $_POST["DescricaoProd"] : '';
    $unid = isset($_POST["DescricaoUnid"]) ? $_POST["DescricaoUnid"] : '';

    if (!empty($name) && !empty($unid)) {  
        echo json_encode("true");
    } else {
        echo json_encode("false");
    }

    $mydb = new wpdb('USUARIO','SENHA','nome_DB','localhost');
    $rows = $mydb->get_results("select Name from my_table");

    $mydb->insert( 
        'ProdHigieneteste', 
        array( 
            'DescricaoProd' => $name, 
            'DescricaoUnid' => $unid 
        ), 
        array( 
            '%s', 
            '%d' 
        ) 
    );

    $mydb->insert( 
        'StockHigieneteste', 
        array( 
            'DescricaoProd' => $name, 
            'DescricaoUnid' => $unid 
        ), 
        array( 
            '%s', 
            '%d' 
        ) 
    );

    /* If you want to use regular wordpress db then use $wpdb */

    $results = $wpdb->get_results("SELECT * FROM StockHigieneteste");
wp_die();
}

在带有“url : myAjax.ajaxurl,

的ajax更改网址参数中

使用“wp_localize_script”时,请使用您已包含的自定义js slug