使用Ajax和Javascript将数据发布到MySQL时允许使用撇号

时间:2017-01-14 20:06:29

标签: javascript php ajax

希望只是一个快速的,我可以看到我的问题的各种答案,但发现很难在我的代码中实现。 正如标题所说,在使用ajax和javascript将数据发布到MySQL时,希望允许撇号。刚刚提交数据时,它不起作用。

希望有人可以最终确定代码以使其工作。

HTML

<!-- Modal - Add New Record/Info -->
<div class="modal fade" id="add_new_record_modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title" id="myModalLabel">Add some useful information</h4>
        </div>
        <div class="modal-body">

            <div class="form-group">
                <label for="add_info">Add Info</label>
                <input type="text" id="info" class="form-control"/>
            </div>

        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
            <button type="button" class="btn btn-primary" onclick="addRecord()">Add Record</button>
        </div>
    </div>
</div>
</div>
<!-- // Modal -->

的Javascript

// Add Record
function addRecord() {
    // get values
    var info = $("#info").val();

    // Add record
    $.post("ajax/addRecord.php", {
        info: info
    }, function (data, status) {
        // close the popup
        $("#add_new_record_modal").modal("hide");

        // read records again
        readRecords();

        // clear fields from the popup
        $("#info").val("");
    });
}

Ajax - addRecord.php

<?php
    if(isset($_POST['info']))
    {
            // include Database connection file
            include("db_connection.php");

            // get values
            $info = $_POST['info'];

            $query = "INSERT INTO useful_info(info) VALUES('$info')";
            if (!$result = mysql_query($query)) {
            exit(mysql_error());
        }
        echo "1 Record Added!";
    }
?>

通过阅读网站上的其他问题,我可以使用get_magic_quotes_gpc或创建JSON对象并使用JSON.stringify。只是想知道如何最好地实现这一点。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

根据@ JimL&#39; comment,您应切换到 mysqli PDO 并使用参数化查询,因为mysql扩展名为{ {3}}

例如(PDO):

$stmt = $pdo->prepare("INSERT INTO useful_info(info) VALUES(?)");
if (!$stmt->execute([$info])) {
  exit(implode(" :: ", $stmt->errorInfo()));
}

答案 1 :(得分:0)

正如其他人所提到的,mysql_功能和get_magic_quotes_gpc都过时了。 我知道这一开始可能会让人感到压力,但我建议this wiki,当我自己从没有预备语句的mysqli_转换为使用预准备语句的PDO时,这确实帮助我走上了正确的轨道。 你不会后悔,它更安全,更容易使用,只要你正确使用它,你就不必使用撇号等。你只需按原样在数据库中插入数据即可就sql注入而言,这很好(并不意味着你在显示它们时不必关心用户输入的数据,但这是另一回事。)