[英]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();
}
?>
您有多個問題。
db_connection.php
。 一次直接在firstplayerwins.php
,然后再次通過createDB.php
間接。 您可以通過使用include_once
來解決這個問題,但更好地解決為什么需要包含它兩次的問題。 如果您包含文件createDB.php
並且您知道它已經包含連接文件,則不要在firstplayerwins.php
再次包含連接文件。$conn->connect_error
而不是$conn->error
。createDB.php
文件的用途。 您可能認為您正在創建數據庫或表,但您只執行查詢"INSERT INTO Scores (FirstPlayerWins, SecondPlayerWins, Ties) VALUES (0, 0, 0)";
將新行添加到現有表Scores
。$sql = "UPDATE Scores SET FirstPlayerWins=score";
不會執行,因為它需要名為score
列,它不是表的一部分。 您可能希望將當前分數增加 1,即$sql = "UPDATE Scores SET FirstPlayerWins=FirstPlayerWins+1";
,但這會增加表中每一行的這個數字。 還記得每次執行此腳本時都會向表中添加一個新行嗎?OpenCon
函數的一部分: if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$result = mysqli_query("SELECT FirstPlayerWins FROM Scores", $conn);
在任何地方,即使你做了這個 SQL 也會從你的表中選擇每一行。 您需要定義主鍵並使用WHERE primary_key_whatever_you_name_it = row_id
選擇CloseCon($conn)
是完全多余的。 您不需要自己關閉連接。 當腳本結束時,連接會自動關閉。總的來說,我建議您對數據庫設計進行更多研究。 您的表架構可以大大改進,但這不是主題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.