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

使用Ajax和Javascript将数据发布到MySQL时允许使用撇号,javascript,php,ajax,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

希望只是一个简单的例子,我可以看到我的问题的各种答案,但发现很难实现到我的代码中。 正如标题所说,希望在使用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 -->
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!";
    }
?>
根据@JimL,您应该切换到mysqliPDO并使用参数化查询,就像mysql扩展一样

例如(PDO):

$stmt=$pdo->prepare(“插入有用的信息(info)值(?);
如果(!$stmt->执行([$info])){
退出(内爆(“::”,$stmt->errorInfo());
}
根据@JimL,您应该切换到mysqliPDO并使用参数化查询,就像mysql扩展一样

例如(PDO):

$stmt=$pdo->prepare(“插入有用的信息(info)值(?);
如果(!$stmt->执行([$info])){
退出(内爆(“::”,$stmt->errorInfo());
}

正如其他人所提到的,
mysql\uu
fonctions和
get\u magic\u quotes\u gpc
都已经过时了。 我知道一开始这可能会让人难以承受,但我建议,这确实帮助我走上了正确的道路,当我自己从使用没有准备语句的mysqli_uu切换到使用准备语句的PDO时。
您不会后悔,它更安全、更易于使用,而且只要您正确使用它,就不必使用撇号等。您只需按原样在数据库中插入数据,就可以进行sql注入(这并不意味着你在显示用户输入的数据时不必关心它们,但那是另一回事)。

正如其他人所提到的,mysql和
get\u magic\u gpc
都已经过时了。 我知道一开始这可能会让人难以承受,但我建议,这确实帮助我走上了正确的道路,当我自己从使用没有准备语句的mysqli_uu切换到使用准备语句的PDO时。
您不会后悔,它更安全、更易于使用,而且只要您正确使用它,就不必使用撇号等。您只需按原样在数据库中插入数据,就可以进行sql注入(但这并不意味着您在显示用户输入的数据时不必关心这些数据,但这是另一回事).

您基本上是通过sql注入自己来打破查询。这里唯一有效的解决方案是从使用mysql_*改为使用PDO或Mysqli并使用准备好的/参数化的查询。您基本上是通过sql注入自己来打破查询。这里唯一有效的解决方案是从使用mysql_*改为使用PDO或Mysqli并使用prepa红色/参数化查询。
<?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!";
    }
?>