编辑 解决问题
因此,在尝试使用PHP在我正在创建的网站上实现非常基本的MySQL查询功能时遇到了一个棘手的问题。
我是PHP / HTML的新手,所以这可能是一个非常简单的解决方案,但我用Google搜索并找不到任何东西。
所以在我的数据库中,我有一个名为Teams的表,其中包含字段“name”和“continent”,它们都是char(20)字段。
在这个网页上,我有一张表格,显示某个大陆的所有团队名称。 (此功能目前正常工作)
问题在于此表下的一个部分,该部分允许用户输入他们希望更新的团队的当前名称(更改团队名称/大陆)并输入团队的新名称或更改其大陆。
第一个字段(当前名称)是必需的,以便SQL UPDATE知道要更新的记录,其他两个字段(新名称和新大陆)是可选的。
新名称字段是文本字段,新的大陆字段是下拉菜单。
这些下面有一个提交按钮,用于更新记录。
目前,更改团队名称的方式非常有效,但每当我尝试更新团队的大陆时,它都不会更改大陆,而是将团队名称更改为“”,或者基本上将空白名称更改为
这是我的代码:
<div class="alter-teams">
Update Team:
<div>
Enter the current name of the team you want to update in the first box.
<br />
Enter the new name and / or select the new continent.
<form method="post">
Current Team Name: <input type="text" name="teamname" required="" />
<br />
New Team Name: <input type="text" name="newteamname" r />
<br />
New Continent: <select name="continent" />
<option value="Asia" selected="">Asia</option>
<option value="Europe">Europe</option>
<option value="North America">North America</option>
<option value="South America">South America</option>
</select>
<br />
<input type="submit" name="updateteam" value="Update Team" />
</form>
</div>
</div>
<?php
if(isset($_POST['updateteam']))
{
//set up table variablew
$table = mysql_select_db("cs275_anzianoa", $DBCNX);
if(!$table){
echo 'Table Fail';
}
//get input from HTML form(s)
$teamname = $_POST['teamname'];
$newteamname = $_POST['newteamname'];
$continent = $_POST['continent'];
//perform UPDATE function
if(isset($newteamname))
{
$query =
"UPDATE Teams SET name = '$newteamname' WHERE name = '$teamname'";
$result = mysql_query($query);
if(!$result){
echo 'Update Query Fail' . mysql_error();
}
}
if(isset($continent))
{
$query =
"UPDATE Teams SET continent = '$continent' WHERE name = '$teamname'";
$result = mysql_query($query);
if(!$result)
{
echo 'Update Query Fail' . mysql_error();
}
}
//refresh page
echo "<script>location.reload();</script>";
}
?>
注意:下拉列表的默认值为亚洲,因为此网页目前显示亚洲所有团队。
感谢阅读。
答案 0 :(得分:0)
感谢用户Ryan Vincent,我能够解决我的问题。
问题在于我执行查询的顺序。我首先更改名称,然后尝试更改大陆,但是对大陆的更改取决于团队的名称。因此,在第一个查询被触发后,第二个查询在更改正确的团队时遇到了问题。
另外,我的
if(isset($newteamname))
没有按预期工作,因为如果它是一个空字符串,它不会返回NULL。因此,如果我将第二个框留空,它将用空字符串覆盖团队名称。
因此,我将其更改为
if($newteamname !== '')
以下是完整的,有效的代码:)
<!-- Update Team -->
<div class="alter-teams">
Update Team:
<div>
Enter the current name of the team you want to update in the first box.
<br />
Enter the new name and / or select the new continent.
<form method="post">
Current Team Name: <input type="text" name="teamname" required="" />
<br />
New Team Name: <input type="text" name="newteamname" r />
<br />
New Continent: <select name="continent" />
<option value="Asia">Asia</option>
<option value="Europe">Europe</option>
<option value="North America" selected="">North America</option>
<option value="South America">South America</option>
</select>
<br />
<input type="submit" name="updateteam" value="Update Team" />
</form>
</div>
</div>
<?php
if(isset($_POST['updateteam']))
{
//set up table variable
$table = mysql_select_db("cs275_anzianoa", $DBCNX);
if(!$table){
echo 'Table Fail';
}
//get input from HTML form(s)
$teamname = $_POST['teamname'];
$newteamname = $_POST['newteamname'];
$continent = $_POST['continent'];
//perform UPDATE function
if(isset($continent))
{
$query =
"UPDATE Teams SET continent = '$continent' WHERE name = '$teamname'";
$result = mysql_query($query);
if(!$result)
{
echo 'Update Query Fail' . mysql_error();
}
}
if($newteamname !== '')
{
$query =
"UPDATE Teams SET name = '$newteamname' WHERE name = '$teamname'";
$result = mysql_query($query);
if(!$result){
echo 'Update Query Fail' . mysql_error();
}
}
//refresh page
echo "<script>location.reload();</script>";
}
?>