c# - Mysqli 到 php 到 c#

标签 c# php mysql unity-game-engine multidimensional-array

所以我有一个 C# 列表,它被转换为字符串,然后在 PHP 中转换为二维数组,然后发送到 MySQL 数据库。现在我该如何扭转这一局面,从而可以从数据库下载到 PHP,而不是下载到 C# 列表。

这是我到目前为止所拥有的,但我不确定是否需要将数据下载回 PHP 中的数组,或者是否应该将其下载为字符串并将其分解为 c# 中的列表?

这是我的 C# 代码:

public List<Ship> shipList = new List<Ship>();
string shipListString = "";
WWWForm form = new WWWForm();
form.AddField("username", username);
form.AddField("shipcount", ShipInventory.Count);  
for (int i = 0; i < shipList.Count; i++)
{        
    shipListString = shipListString + " " + shipList[i].id + " '" + shipList[i].username + "' '" + shipList[i].name + "' " + shipList[i].power +
             "zzz";// + ShipInventory[i];            
}
form.AddField("shipinventory", shipListString);
WWW www = new WWW("x.x.x.x/savedata.php", form);
yield return www;

这是我的 php:

$shiparraytobesplit = $_POST["shipinventory"];
$ships =  explode("zzz", $shiparraytobesplit);
unset($ships[count($ships)-1]);

$shipinfo = array_map(function($ship) {
    $tempshipinfo = explode(" ", $ship);
    $ship_assoc = [
        "id" => $tempshipinfo[1],
        "name" => $tempshipinfo[2],
        "username" => $tempshipinfo[3],
        "hp" => $tempshipinfo[4]
    ];
    return $ship_assoc;
}, $ships);

$sql = sprintf('INSERT INTO shipinventory (shipid,shipname,username,shippower) VALUES (%s)', implode(',',array_values($shipinfo[$i])));

if(!mysqli_query($con, $sql))
{
    echo("error description: " . mysqli_error($con));       
}

这可以很好地将我的 C# 列表上传到数据库,但我不确定将其从数据库下载回 C# 列表的最佳方法是什么。任何建议都会很棒!谢谢

最佳答案

好吧,我设法让它工作,但我想还有更好的方法,所以请分享!谢谢:

C# 脚本:

WWW www = new WWW("x.x.x.x/loaddata.php");
        yield return www;
        stringFromPHP = www.text;

        char[] delimiterENTER = new char[] {'\n' };
        char[] delimiterSPACE = new char[] { ' ' };
        shipStringArray = stringFromPHP.Split(delimiterENTER, StringSplitOptions.RemoveEmptyEntries);        
        shipList.Clear();
        for (int i = 0; i < shipStringArray.Count(); i++)
        {
            string[] shipInfo = shipStringArray[i].Split(delimiterSPACE);                    
            shipList.Add(new Ship(Int32.Parse(shipInfo[0]), shipInfo[1], shipInfo[2], Int32.Parse(shipInfo[3]), shipStringArray[i]));            
        }

和 PHP:

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT shipid, username, shipname, shippower FROM shipinventory";

if ($result = mysqli_query($con, $query)) {

    while ($row = mysqli_fetch_assoc($result)) {
      $stringtoexplodeincsharp  printf ("%s %s %s %s\n",(int) $row["shipid"], $row["username"], $row["shipname"],(int) $row["shippower"]);
    }

    mysqli_free_result($result);
}

mysqli_close($con);

关于c# - Mysqli 到 php 到 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58841030/

相关文章:

php - 使用php连接数据库后修改后不起作用

java - spring boot CrudRepository查询传递对象mysql

mysql - MySql ODBC 连接器 5.2.6 的哪个连接字符串?

c# - 通过外部(自定义)服务的 ASP 核心登录

php - Laravel 在 Web 服务器的 View 中显示数据

php - 为什么在查询中设置 group_concat_max_len 变量会导致 PHP 的 bind_param() 出错?

未发送 MySQL 复制更改

c# nameof 原始参数正在被覆盖

c# - 打开 XML 文件时出错(错误名称异常)

c# - C# 中的方法签名