是否可以创建1个创建表的php文件,以及3个更新该表的其他php文件?
我正在用html、css、javascript(jquery)和php创建一个tic-tac-toe游戏。我想使用php和MySQL在一个表中保存胜利和平局的数量,并在与游戏相同的html页面上显示这些值 我已经准备好了我的游戏,我有4个php文件(其中3个几乎相同)。一个用于更新第一个玩家的表,另一个用于更新第二个玩家的表,另一个用于更新平局,另一个用于在mySQL中创建表。我不确定我是否走上了正确的道路,因为我对使用PHP和MySQL相当陌生。但到目前为止,我的代码得到了一个“致命错误:无法重新声明(我的函数)…”。有人能告诉我该怎么做吗 createDB.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相当陌生。但到目前为止,我的代码得到了一个“致命错误:无法
<?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());
}