簡體   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