【问题标题】:SQL updates in PHPPHP 中的 SQL 更新
【发布时间】:2017-06-27 18:23:08
【问题描述】:

我是 PHP 和 SQL 的新手,我正在尝试学习如何将它们与 Unity 一起使用。

首先,我使用 Unity 在我的数据库中创建了一个新表,它工作正常。现在我想用一些信息更新这个表,这个信息应该来自 Unity。 但它不起作用;我不确定它是我的 C# 脚本还是我的 PHP 脚本。 首先,这是我的 C# 脚本中的一个 sn-p:

IEnumerator InsertMemberData(string username,string day,int sale)
{
    //insert data to table
    WWWForm form = new WWWForm();
    form.AddField("usernamePost", username);
    form.AddField("currentDayPost", day);
    form.AddField("daySalePost", sale);

   UnityWebRequest www = UnityWebRequest.Post(updateDataTable, form);

    yield return www.Send();

    if (www.isError)
    {
        Debug.Log(www.error);
    }
    else
    {
        Debug.Log("Form upload complete!");
    }
}

现在是我的 PHP 脚本

<?php

$servername = **********
$server_username = ***************
$server_password = ****************
$dbName = *****************

$username = $_POST["usernamePost"];
$currentDay = $_POST["currentDayPost"];
$daySale = $_Post["daySalePost"];

//Make Connection
$conn = new mysqli($servername, $server_username, $server_password, $dbName);
//Check Connection
if(!$conn)
{
    die("Connection Failed". mysqli_connect_error());
}

$sql = "Update tbl_{$username} SET ".$currentDay." = ".$daySale." WHERE id=1";
$result = mysqli_query($conn, $sql);

if(!$result){
mysqli_error($conn);
echo "there was an Error!";
}
else echo "Evereything ok.";
?>

我只想在特定日期的特定表中发送一个数字。

【问题讨论】:

  • Update tbl_{$username} 你真的为每个用户准备了一张桌子吗?
  • 是的,您应该(重新)考虑(考虑)因为如果您打算继续使用它,您将拥有一个庞大的数据库。另外,如果那是您的完整代码,我没有看到您实际执行该查询。
  • 差不多,是的。
  • 并在if(!$result)部分添加mysqli_error($conn)以防出现错误。
  • 太好了,您知道 Stack 可让您发布自己的答案。如果您提供有关如何修复它的清晰详细的答案,我将很高兴支持它。这也将有助于未来的访问者也了解该问题,以及他们是否也有同样的问题。

标签: c# php mysql sql unity3d


【解决方案1】:

我重新思考了我的工作。所以没有每个用户的表,只有在所有用户/用户信息的表上,并认为想要保存/加载。

C# 脚本大致相同:

IEnumerator InsertMemberData(string username,string day,int sale)

IEnumerator InsertMemberData(string username,string day,**string** sale)

还有我的 PHP 脚本:

    if($conn)
{
    $sqlCheck = "SELECT ID FROM userinfo WHERE username = '".$username."' ";
    $resultCheck = mysqli_query($conn,$sqlCheck);


    if($resultCheck){
        if(mysqli_num_rows($resultCheck)>0)
        {
            $sqlUpdate = "UPDATE userinfo SET {$day} = '".$value."' WHERE username = '".$username."' ";

            $resultUpdate = mysqli_query($conn,$sqlUpdate);

            if($resultUpdate)
            {
                echo("Update success");
            }else
            {
                echo("Update Failed");
            }
        }
    }else{
        echo("There was an Error.");
    }   
}

我不太确定为什么,但这对我来说非常有效。

【讨论】:

  • 根据您向此代码提供数据的方式,您可能在此处遇到 SQL 注入漏洞。小心将用户提供的数据连接到 SQL 查询中。
  • 随着时间的推移,我将很多代码更改为更复杂。我还考虑切换到 Rest Api。谢谢
  • 您是否在新解决方案中使用绑定参数?谢天谢地,您的数据库连接器 (MySQLi) 确实支持它们。
  • 暂时没有。感谢您的建议。
猜你喜欢
  • 2017-10-28
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 2013-07-09
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多