为什么形式的价值.添加字段不接受字符串


Why the Value of form.AddField won't accept string

我想向我的服务器发送一些数据。所以我制作了这个 C# 代码

IEnumerator SaveAllPlayerPrefs(string[] parms)
    {
        WWWForm form = new WWWForm();
        form.AddField("bone" , value);
        WWW webRequest = new WWW(db_url + "SaveAllPlayerPref.php", form);
        yield return webRequest;
    }

我有用于接收它的 php 代码

<?php
    $sql_connect = mysql_connect("localhost", "root", "") or die ("no DB Connection");
    mysql_select_db("example") or die ("DB not found");
    $bone = $_POST['bone'];
    mysql_query("INSERT INTO save_game (bone) VALUES ($bone);");
    mysql_close($sql_connect);
?>

问题是当我尝试这段代码时,它工作得很好,但是当值仍然是 int 时。当我将值更改为字符串类型时,它无法发送到数据库,并且我的 Unity 崩溃了,

稍后我尝试

将值更改为字符,我尝试发送

"一" 但是当我在数据库中这样做时,它不会保存"a",而是保存 97,ASCI 值。

我不明白这有什么问题,在服务器的数据库中,我设置的值是 varchar(100)。

请在:)之前帮助我和谢谢

WWWForm.AddField 的文档指出,您只能使用 int 作为第二个参数,以便它的行为正确,并且 char 实际上是单个字符和一个 16 位数字(序号)值,因此它被转换为 int。

AddField(fieldName: string, i: int): void;

或者,您可以尝试第二种编码方法,以便可以传递string值。

AddField(fieldName: string, value: string, e: Encoding = System.Text.Encoding.UTF8): void;

我不确定 PHP 部分,但我认为您可能需要在$bone周围加上引号

"INSERT INTO save_game (bone) VALUES ('$bone');"