Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以创建1个创建表的php文件,以及3个更新该表的其他php文件?_Php_Jquery_Mysql - Fatal编程技术网

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

是否可以创建1个创建表的php文件,以及3个更新该表的其他php文件?,php,jquery,mysql,Php,Jquery,Mysql,我正在用html、css、javascript(jquery)和php创建一个tic-tac-toe游戏。我想使用php和MySQL在一个表中保存胜利和平局的数量,并在与游戏相同的html页面上显示这些值 我已经准备好了我的游戏,我有4个php文件(其中3个几乎相同)。一个用于更新第一个玩家的表,另一个用于更新第二个玩家的表,另一个用于更新平局,另一个用于在mySQL中创建表。我不确定我是否走上了正确的道路,因为我对使用PHP和MySQL相当陌生。但到目前为止,我的代码得到了一个“致命错误:无法

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

我已经准备好了我的游戏,我有4个php文件(其中3个几乎相同)。一个用于更新第一个玩家的表,另一个用于更新第二个玩家的表,另一个用于更新平局,另一个用于在mySQL中创建表。我不确定我是否走上了正确的道路,因为我对使用PHP和MySQL相当陌生。但到目前为止,我的代码得到了一个“致命错误:无法重新声明(我的函数)…”。有人能告诉我该怎么做吗

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

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

您有多个问题

  • 您的核心问题是在同一个脚本中包含了两次文件
    db_connection.php
    。一次直接进入
    firstplayerwins.php
    ,然后再通过
    createDB.php
    间接进入。您可以通过使用来解决这个问题,但是更好地解决为什么需要包含它两次的问题。如果您包含文件
    createDB.php
    ,并且您知道它已经包含连接文件,那么不要在
    firstplayerwins.php
    中再次包含连接文件
  • 要检查连接错误,应使用
    $conn->connect\u error
    而不是
    $conn->error
  • 您甚至不清楚
    createDB.php
    文件的用途。您可能认为您正在创建数据库或表,但您只执行查询
    “插入分数(第一个playerwins,第二个playerwins,Ties)值(0,0,0)”将新行添加到现有表中
    分数
  • 此SQL
    $SQL=“更新分数集FirstPlayerWins=score”
    不会执行,因为它需要名为
    score
    的列,该列不在表中。您可能希望将当前分数增加1,即
    $sql=“updatescoressetfirstplayerwins=FirstPlayerWins+1”,但这将增加表中每一行的此数字。请记住,执行此脚本时,每次都会向表中添加一个新的行
  • 这三行应该是
    OpenCon
    函数的一部分:
  • 您从不使用
    $result=mysqli\u查询的结果(“从分数中选择FirstPlayerWins”,$conn)
    anywhere,即使您这样做了,SQL也会从表中选择每一行。您需要定义主键并使用
    选择WHERE primary\u key\u WHERE WHERE\u You\u name\u it=row\u id
  • 您的函数
    CloseCon($conn)
    是完全冗余的。您不需要自己关闭连接。脚本结束时,连接将自动关闭
    总的来说,我建议您对数据库设计进行更多的研究。您的表模式可能会有很大的改进,但这与主题无关。

    为什么每次都要创建表?您应该有一个存储游戏结果的表。为什么要存储“wins”(可能是一个数字)作为
    VARCHAR(4)
    ?使用
    INT
    。除非它们是字符串类型的值,否则将它们存储为字符串是没有意义的,比如它们击败的团队或其他什么。这些函数中没有一个函数,因此不足以说明这一点,但我假设这是因为您将db_connection.php twiceAddition包含到
    varchar(4)
    ìnt
    :文本中,8比12大。对于数字,它更小。因此,如果你比较一下队员,你会发现
    int
    非常重要。@wimm今年获胜最多的球队有9场,以120场击败了对手!
        if (!$conn) {
            die("Connection failed: " . mysqli_connect_error());
        }