php - 存储在 MySQL 中时字符发生变化

标签 php mysql

我正在使用 PHP 将一些不起眼的 HTML 表单元素存储到 MySQL 中。该表单描述了姓名、职业和地址,并且我看到了一些奇怪的结果,例如,所有结果都在同一份表单提交中: “Pro Tester”在 MySQL 中存储为“Pro Tester”(很好,但是) “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);

最佳答案

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

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

关于php - 存储在 MySQL 中时字符发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23938970/

相关文章:

php - Facebook PHP SDK 错误 mb_substr

php - 在 php 中解决跨站点脚本 (XSS) 的最佳方法/实践?

MySql;如何找到两个查询之间的时间并按最短时间对它们进行排序

php - 一个 MySQL 查询,一些规范化表,问题 w/counts 来自规范化表行(来自 PHP)

mysql - 如何在 Mybatis 的 select sql 中连接一个数字类型?

mysql - 删除MySQL中刚好有10行的表

php - 计算页面浏览量背后的逻辑

php - MY SQL查询线程消息收件箱并发送

php - 多维数组中的 array_unshift 在所有数组的第一个元素处插入

php - 网站的用户模式