是否可以制作1个用于创建表的php文件,以及3个用于更新该表的其他php文件?

时间:2019-04-28 20:03:26

标签: php jquery mysql

我正在用html,css,javascript(jquery)和php创建tic tac toe游戏。我想使用php和MySQL将胜利和平局的次数保存在表格中,并在与游戏相同的html页面上显示值。

我准备好进行游戏了,并且我有4个php文件(其中3个几乎相同)。一个更新第一个玩家获胜表,另一个更新第二个玩家获胜,另一个更新关系,另一个在mySQL中创建表。我不确定我走的路是否正确,因为使用PHP和MySQL尚不成熟。但是到目前为止,我的代码出现了“致命错误:无法重新声明(我的函数)...”。有人可以指出我需要做的正确方向。

createDB.php

for (int i = 0; i < dynamicList.Count; i++)
                    {
                        dynamicList[i].GetType().GetProperty(first)
                            .SetValue(dynamicList[i], ((double)(dynamicList[i][first])).ToString("N", CultureInfo.CreateSpecificCulture("fr")), null);

                        dynamicList[i].GetType().GetProperty(two)
                            .SetValue(dynamicList[i], ((double)(dynamicList[i][first])).ToString("N", CultureInfo.CreateSpecificCulture("fr")), null);
                    }

firstplayerwins.php

<?php

    include 'db_connection.php';

    $conn = OpenCon();

    $sql = "CREATE TABLE Scores (
     FirstPlayerWins VARCHAR(4), 
     SecondPlayerWins VARCHAR(4),
     Ties VARCHAR(4),
     )";

    $sql = "INSERT INTO Scores (FirstPlayerWins, SecondPlayerWins, Ties) VALUES (0, 0, 0)";

    if (mysqli_query($conn, $sql)) {
        echo "Database created successfully";
    } else {
        echo "Error creating database: " . mysqli_error($conn);
    }?>

db_connection.php

<?php

    include 'db_connection.php';
    include 'createDB.php';


    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }


    $score += 1;

    $sql = "UPDATE Scores SET FirstPlayerWins=score";

    $result = mysqli_query("SELECT FirstPlayerWins FROM Scores", $conn);

    if (mysqli_query($conn, $sql)) {
        echo "New record updated successfully";
    } else {
        echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }


    CloseCon($conn);
?>

1 个答案:

答案 0 :(得分:0)

您有多个问题。

  1. 您的核心问题是您在同一脚本中两次包含了文件db_connection.php。直接进入firstplayerwins.php,然后再次间接进入createDB.php。您可以改用include_once来解决此问题,但可以更好地解决为什么需要两次将其包括在内的问题。如果您包含文件createDB.php并且知道它已经包含连接文件,则不要在firstplayerwins.php中再次包含连接文件。
  2. 要检查连接错误,应使用$conn->connect_error而不是$conn->error
  3. 您甚至还不清楚createDB.php文件的用途。您可能以为正在创建数据库或表,但是只执行查询"INSERT INTO Scores (FirstPlayerWins, SecondPlayerWins, Ties) VALUES (0, 0, 0)";,这会将新行添加到现有表Scores中。
  4. 该SQL $sql = "UPDATE Scores SET FirstPlayerWins=score";将不会执行,因为它期望列score的列不属于表。您可能希望将当前分数提高1,即$sql = "UPDATE Scores SET FirstPlayerWins=FirstPlayerWins+1";,但这将增加表中每一行的数字。还记得执行此脚本时,每次都会向表中添加一个新行吗?
  5. 这3行应该是OpenCon函数的一部分:
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
  1. 即使您执行了此SQL操作,也不会在任何地方使用$result = mysqli_query("SELECT FirstPlayerWins FROM Scores", $conn);的结果,SQL将从表中选择每一行。您需要定义主键并使用WHERE primary_key_whatever_you_name_it = row_id
  2. 选择
  3. 您的功能CloseCon($conn)是完全多余的。您不需要自己关闭连接。脚本结束时,连接自动关闭。

总体而言,我建议您对数据库设计进行更多研究。您的表架构可以进行很多改进,但这不在主题范围之内。