[英]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.