在wordpress中使用ajax向php发送数据时出错

6rqinv9w  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(283)

我有这个表格:

<select id="mudar_produto">
    <option></option> 
    <option value="#produto_1">Novo Produto Higiene</option> 
</select>
<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>

我使用这个ajax发送数据而不刷新页面并清除输入:

<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
                            $(".success_messages").removeClass('hide'); // success message
                        } else {
                            $(".error_message").removeClass('hide'); // error message
                        }
                    }
                });

            });
</script>

在插入页面上,我有php代码:

<?php
$servername = "xxx.xxx.x.xx"; 
$username = "xxxxxx"; 
$password = "xxxxxxxxx"; 
$dbname = "xxxxxxxx"; 
$conn = new mysqli($servername, $username, $password, $dbname); 
$conn->set_charset('utf8');
$name = isset($_POST["DescricaoProd"]) ? $_POST["DescricaoProd"] : '';
$unid = isset($_POST["DescricaoUnid"]) ? $_POST["DescricaoUnid"] : '';
if (!empty($name)) && (!empty($unid)) { 

    echo 'true';
} else {
    echo 'false';
}    

$sql = "INSERT INTO ProdHigieneteste (DescricaoProd,DescricaoUnid) 
VALUES ('$name','$unid')";

if ($conn->query($sql) === TRUE);

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

if ($conn->query($sql1) === TRUE);

    //Count total number of rows
    $rowCount = $query->num_rows;

$conn->close(); 

?>

但当我单击register按钮时,控制台中出现以下错误:
岗位http://..x.xx/wordpress/index.php/inserir 500(内部服务器错误)
不会插入到数据库表中。
除了@jeff发现的错误外,还有以下语法错误:

if (!empty ($name)) && (!empty ($unid)) {

我不得不改成:

if (!empty ($name) && !empty ($unid)) {
nwlqm0z1

nwlqm0z11#

这里至少有2个语法错误

if ($conn->query($sql) === TRUE);

在那里

if ($conn->query($sql1) === TRUE);

所以把它们改成

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')";

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

除此之外:
不清楚$conn是否在某个地方设置过。
编辑:在新代码中显示。一个更好的方法是包含一个单独的文件来进行db连接(因为您可能更经常需要它)。
你对sql注入攻击是开放的!
使用事先准备好的陈述。
这可能不是所有的问题,这只是显而易见的事情。

相关问题