繁体   English   中英

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

[英]Is it possible to make 1 php file that creates the table, and 3 other php files that update that table?

我正在使用 html、css、javascript(jquery) 和 php 创建一个井字游戏。 我想使用 php 和 MySQL 在表格中保存胜利和平局的数量,并在与游戏相同的 html 页面上显示这些值。

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

创建数据库

<?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);
    }?>

第一名玩家wins.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);
?>

db_connection.php

<?php
    function OpenCon(){
        $dbhost = "localhost";
        $dbuser = "root";
        $dbpass = "xxxx";
        $db = "Scores";

        $conn = new mysqli($dbhost,$dbuser,$dbpass,$db) or die("Error connecting to database: ". $conn->error);
        return $conn;
    }
    function CloseCon($conn){
        $conn->close();
    }
?>

您有多个问题。

  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. 你从不使用$result = mysqli_query("SELECT FirstPlayerWins FROM Scores", $conn); 在任何地方,即使你做了这个 SQL 也会从你的表中选择每一行。 您需要定义主键并使用WHERE primary_key_whatever_you_name_it = row_id选择
  2. 你的函数CloseCon($conn)是完全多余的。 您不需要自己关闭连接。 当脚本结束时,连接会自动关闭。

总的来说,我建议您对数据库设计进行更多研究。 您的表架构可以大大改进,但这不是主题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM