所以我有一个 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/