0

我正在使用这个更新声明

$sql = "update questions set response = ?, `check` = ? where questionID = ? && starID = ?";
$qc = $pdo_conn->prepare($sql);
$qc->execute(array($_GET['response'], $_GET['check'], $_GET['questionID'], $_SESSION['starid']));

但是当响应值中有一个&时,例如pop and r&b,它最终在数据库中为pop and r

此外,如果有换行符,它会删除所有空格,例如:

Bob
Jim

最终在数据库中为BobJim

数据库中的响应类型是varchar(10000)

这是获取$_GET['response']值的javascript代码

var html = '';
$(document).ready(function(){
    $(".save_btn").live('click', function() {

        $('.response').each(function(){
            //alert($(this).attr('id'));
            //alert($(this).val());
            if ($(this).val() == '') {
                html = $.ajax({
                    url: "response.php?questionID=" + $(this).attr('id') + "&response=" + $(this).val() + "&check=0",
                    async: false
                }).responseText;
            }   
            if ($(this).val() !== '') {
                html = $.ajax({
                    url: "response.php?questionID=" + $(this).attr('id') + "&response=" + $(this).val($POST['response']) + "&check=1",
                    async: false
                }).responseText;
            }   

        }); 
        alert(html);
        location.reload();  
    });
})

if 的这一部分是这种情况下的重要部分:

       if ($(this).val() !== '') {
            html = $.ajax({
                url: "response.php?questionID=" + $(this).attr('id') + "&response=" + $(this).val($POST['response']) + "&check=1",
                async: false
            }).responseText;
        }

有想法该怎么解决这个吗?

4

1 回答 1

1

您应该对 URL 的值进行编码:

escape($(this).val())

&URL 中具有特殊含义,它用作参数之间的分隔符。

于 2013-02-20T23:05:40.543 回答