【问题标题】:PHP MySQL update and strange characters?PHP MySQL 更新和奇怪的字符?
【发布时间】:2013-03-21 19:49:02
【问题描述】:

我有一个更新 mySQL 中的表的表单。它似乎正在工作,但是当表单输入字段中有空格时,它会插入一个奇怪的字符。 “ ”

我感觉这与我使用的字符集有关,但我不确定,因为我以前从未遇到过此类问题。

这是代码。

if($_POST){

    $db = new DB_Connection();
    $return = array();
    $sqlmap = array();
    $count = count($_POST['id']);

    for ($i = 0; $i < $count; $i++) {
        foreach($_POST as $column => $value){
            if(empty($value)) $value = "";
            $sqlmap[$column] = $value[$i];
        }
        //echo "<pre>".print_r($sqlmap,true)."</pre>";
        unset($sqlmap['command']);

        $tableid = $sqlmap['id'];
        $exclude = array("id","Date");

        $sql = "UPDATE contact_form SET ";
        $sqlloop = "";
        foreach($sqlmap as $key => $value){
                if(!in_array($key,$exclude)){
                    $sqlloop .= "`".$key."`='".mysql_real_escape_string($value)."',";
                }
        }
        $sqlloop .= " Date = CURDATE() ";
        $sqlloop = str_replace("Â","",$sqlloop);
        $sqlloop = str_replace("Â ","",$sqlloop);
        $sqlloop = str_replace("_"," ",$sqlloop);
        //$sqlloop = substr($sqlloop, 0, -1);
        $sql .= $sqlloop;
        $sql .= " WHERE id = '".$tableid."';";
        //echo $sql;
        $result = $db->query($sql,"website");
        if (!$result) $return['error'] = "ERROR:".$db->getError();
        else {
            $return['success'] = "SUCCESS";
            echo json_encode($return);
        }
    }
}

似乎只有当有“空白”空间时才会发生。我尝试了剥离和重新包装以及其他一些事情,但似乎没有任何效果。

帮助?

更新:

所以我一直在谷歌上进行一些挖掘,我发现当我序列化表单时,这些空白条目被编码为 %c2%A0。我正在使用 Jquery 。连载()。这是空输入序列化的正常行为吗?

下面是我的 Jquery 代码:

  $("form[name='selectedform']").submit(function(e){
           e.preventDefault();
            $.ajax({
            type: "post",
            dataType: 'json',
            url: "/system/curlbridge.php",
            data: $("#selectedform").serialize(),
            success: function(data){
                    alert(data.Sucess);

            },
            error: function(XMLHttpRequest, textStatus, errorThrown) { 
                alert("Status: " + textStatus); 
                alert("Error: " + errorThrown); 
            } 
            });
    });

【问题讨论】:

    标签: php mysql json curl


    【解决方案1】:

    %C2%A0 是代码点 U+00A0 的 UTF-8 编码,也称为不间断空格。目前尚不清楚这是在哪里生成的。

    您看到 Â 的原因是您的代码将 UTF-8 数据视为 Latin-1,尽管这可能只是显示时间问题。为确保您的浏览器将您输出的数据解释为 UTF-8,请包含相关标头:http://www.w3.org/International/O-HTTP-charset

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 2016-12-01
      相关资源
      最近更新 更多