我正在用html,css,javascript(jquery)和php创建tic tac toe游戏。我想使用php和MySQL将胜利和平局的次数保存在表格中,并在与游戏相同的html页面上显示值。
我准备好进行游戏了,并且我有4个php文件(其中3个几乎相同)。一个更新第一个玩家获胜表,另一个更新第二个玩家获胜,另一个更新关系,另一个在mySQL中创建表。我不确定我走的路是否正确,因为使用PHP和MySQL尚不成熟。但是到目前为止,我的代码出现了“致命错误:无法重新声明(我的函数)...”。有人可以指出我需要做的正确方向。
createDB.php
for (int i = 0; i < dynamicList.Count; i++)
{
dynamicList[i].GetType().GetProperty(first)
.SetValue(dynamicList[i], ((double)(dynamicList[i][first])).ToString("N", CultureInfo.CreateSpecificCulture("fr")), null);
dynamicList[i].GetType().GetProperty(two)
.SetValue(dynamicList[i], ((double)(dynamicList[i][first])).ToString("N", CultureInfo.CreateSpecificCulture("fr")), null);
}
firstplayerwins.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);
}?>
db_connection.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);
?>
答案 0 :(得分:0)
您有多个问题。
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)
是完全多余的。您不需要自己关闭连接。脚本结束时,连接自动关闭。 总体而言,我建议您对数据库设计进行更多研究。您的表架构可以进行很多改进,但这不在主题范围之内。