存储在MySQL中时,字符会发生变化

时间:2014-05-29 17:09:39

标签: php mysql

我正在使用PHP对HTML表单元素进行一些不起眼的存储。表单描述了名称,职业和地址,并且看到了一些奇怪的结果,例如,所有这些都在同一个表单提交中: “Pro Tester”作为“Pro Tester”存储在MySQL中(很好,但是) “1 The Avenue”被存储为“1 + The + Avenue”和 “test29@point1.com”存储为“test29%40point1.com”

知道发生了什么,为什么白色空间处理不一致以及为什么我不能以原始形式存储字符串?

这些是来自大文件的一些不同的代码片段,可能有助于我希望,或者只是混淆。

//----------------------------------------------------------------------------
function processtext($aword) {
    $aword=addSlashes($aword);
    $aword=strtolower($aword);
    $aword=ucwords($aword);
return $aword;
}
//----------------------------------------------------------------------------


    $fname=$_POST["firstname"];
    $sname=$_POST["familyname"];
    $job=$_POST["job"];
    $address=$_POST["address"]; // also tried $address=urldecode($_POST["address"]) but makes no difference
    $country=$_POST["country"];
    $email=$_POST["email"];

    $fname=processtext($fname);
    $job=processtext($job);
    $address=processtext($address);
    $city=processtext($city);
    $country=processtext($country);
    $email=addSlashes($email);

    $sql = "INSERT INTO addressbook (fname, sname, number, job, address, country, email) VALUES ('$fname', '$sname', '$number', '$job', '$address', '$country', '$email')";
    $myresult = mysql_query($sql,$db);

2 个答案:

答案 0 :(得分:0)

您的数据以某种方式进行URL编码,在您从传入参数中检索数据时未正确解码,或者参数本身是双重URL编码。

检查参数的输入方式以及如何处理它们。如果您可以使用一些有助于缩小问题范围的示例代码来修改问题。

答案 1 :(得分:0)

我找到了导致“明显”问题的最特别的问题。我正在使用PHPMySQL查看表更改,并执行SQL搜索以反复查找测试条目。 PHPMySQL正在缓存结果 - 这是我以前从未见过的现象。刷新浏览器并没有改变它。直到我将测试地址从'1 The Avenue'更改为'2 The Avenue'之后才更新并显示我很久以前就解决了'+'问题。

向所有人道歉,从你的角度追逐一个不可解决的问题,并感谢你的想法和建议。每一次微小的推动都让我重新思考这一点,所以今天你们所有人都有所帮助。非常感谢大家。