如何使用 php 从多行表单更新 mysql 数据库 [关闭]
Posted
技术标签:
【中文标题】如何使用 php 从多行表单更新 mysql 数据库 [关闭]【英文标题】:How do I update a mysql database from a mutliple line form using php [closed] 【发布时间】:2012-07-19 03:39:03 【问题描述】:我是 php 新手,整天都在为这个问题苦苦挣扎。我有一个包含玩家详细信息的 mysql 数据库。我想从数据库中选择它们并以表格的形式显示在表格中,这与下面的代码配合得很好。
当我想更新行时出现问题,可能是使用选项字段将播放器状态从活动状态变为非活动状态。 当我按下提交时,我可以获得每个 pdbactive 字段的值 OK,但我无法获得 PID,这是对数据库进行更新的关键。
<form name="selected_players" action="" method="POST">
<table border="1">
<th>Player ID</th>
<th>Player Name</th>
<th>Player Surname</th>
<th>Status</th>
<th>Primary Team*</th>
<?php
// Then get the players from the players table who have got same team_name but no team_id yet....which would have be set if they were active
$query = "select * from `player2012` where teamid ='$tid' and aru='A';";
$result = mysql_query($query) or die ("Error in query: $query " . mysql_error());
$count = mysql_num_rows($result);
echo $count;
//echo ("<br />");
while ($row = mysql_fetch_assoc($result))
$player_id = $row["player_id"];
$player_fname = $row["player_fname"];
$player_sname = $row["player_sname"];
$pactive = $row["active"];
//echo ($pactive);
//echo ("<br />");
?>
<tr>
<td><input name"pid[]" id="pid[]" type="text" value="<?php echo $player_id ?>" /><?php echo $player_id ?></td>
<td><input name"player_fn[]" type="hidden" value="<?php echo $player_fname ?>" /><?php echo $player_fname ?></td>
<td><input name"player_sn[]" type="hidden" value="<?php echo $player_sname ?>" /><?php echo $player_sname ?></td>
<?php if($pactive=="1")
?>
<td><select name="pdbactive[]" id="pdbactive[]">
<option value="1" selected="selected">Active</option>
<option value="0">Not Active</option>
</td>
<?php
else
?>
<td><select name="pdbactive[]" id="pdbactive[]">
<option value="1">Active</option>
<option value="0" selected="selected">Not Active</option>
</td>
<?php
?>
<td>
</td>
</tr>
<?php
?>
</table>
<p> </p>
<p> When you have updated "status" for each of these players, please press submit button
<input name="Submit" type="submit" id="Sumbit" value="Submit" /> </p>
</form>
<?php
mysql_free_result($result);
//if form has been pressed proccess it
if($_POST["Submit"])
//get data from form
$ractive = $_POST['pdbactive'];
$rid= $_POST['pid'];
for($i=0;$i<$count;$i++)
echo ($i);
echo ("<br />");
$stat=($ractive[$i]);
$idd=($rid[$i]);
$sql_insert="UPDATE 'player2012' SET active='$stat' where id='$idd'";
print($sql_insert);
echo ("<br />");
?>
目前我只想创建 SQL 语句,以便在开始更新数据库之前知道它可以工作。所以所有的回声和打印只是我试图找出答案
求助!!!!!!!!!!!!!!!
【问题讨论】:
【参考方案1】:您要插入的表的确切名称是什么? (区分大小写)。
如果它是小写的,例如:UPDATE 'player2012' SET active='$stat' where id='$idd'
- 应该没问题,但它是大写的 - 你应该删除引号:UPDATE player2012 SET active='$stat' where id='$idd'
.另外,我会添加:echo $rid;
并在 for 循环内添加:echo $idd;
以查看我得到的参数是什么。
【讨论】:
【参考方案2】:我不是 100% 确定您在寻找什么,但我认为您想要一个选项,例如每个播放器旁边的复选框,如果选中该框并单击提交,它将删除该播放器?
【讨论】:
嗨大卫,是的,你是对的,我遇到的问题是当我按下提交以更新数据库时,从表单中获取信息。我可以得到 pdbactive OK,但我没有得到 pid?【参考方案3】:解决了。
问题是我在表单输入名称上缺少“=”
<td><input name"pid[]" id="pid[]" type="text".....
应该阅读
<td><input name="pid[]" id="pid[]" type="text"....
微妙但现在可以享受!
【讨论】:
以上是关于如何使用 php 从多行表单更新 mysql 数据库 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP 使用复选框从 mysql 数据库中删除多行?