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 - Swagger PHP - 如何定义嵌套属性?

php - 重复插入/更新时时间戳为全零

mysql - 使用全连接但不使用左连接时出现问题。为什么?

mysql - 在 MySql 中按时间对 COUNT 进行分组

php - 限制 wordpress 模板默认搜索中的最小字符数

PHP MySQL - 内部连接 ​​: userid = part of value

php - 将参数传递给类构造函数

PHP Mysql If 语句不起作用

php - 如何防止向MySQL数据库中插入重复数据

mysql - 从列中选择唯一条目