繁体   English   中英

需要帮助使用HTML表单中的值更新数据库行

[英]Need help updating database row with values from HTML form

我有一个管理员区域,管理员可以在其中设置修复级别,并在用户区域的进度条上显示。 除了将mySQL数据库更新为提交的值之外,我还有所有工作。

我的数据库有一个名为'users'的表,字段'UserID','Username','Password','progress','admin'。

这是我用来尝试使魔法发生的代码:

<?php
$query="SELECT * FROM users";
$result=mysql_query($query);
$num=mysql_numrows($result);

?>
<form id="chooseuseredit" method="post" action="<?php echo $PHP_SELF;?>">
<select name="ChooseUser">
<?php
$i=0;
while ($i < $num) {

$f1=mysql_result($result,$i,"UserID");
$f2=mysql_result($result,$i,"Username");
$f3=mysql_result($result,$i,"progress");
$f4=mysql_result($result,$i,"admin");
?>

<option value="<?php echo $f1; ?>"><?php echo $f2; ?></option>

<?php
$i++;
}
?>
</select>
<input type="submit" name="chooseSubmit" id="chooseSubmit" value="Choose User" />
</form>
<?php
if(isset($_POST['chooseSubmit']) )
{
  $varID = $_POST['ChooseUser'];
  $errorMessage = "Jesus Christ Benton, Choose a User!!";

?>
<br>
<p><strong>Editing UserID: <?php echo "$varID"; ?></strong></p>
<p>Progress:<br>
<form name="edituserform" method="post" action="<?php echo $PHP_SELF;?>">
<select name="editinguser">
<option value="0">Phone Not Recieved</option>
<option value="20">Phone Recieved</option>
<option value="40">Parts Recieved</option>
<option value="60">Repair Started</option>
<option value="80">Repair Finished</option>
<option value="100">Posted Back</option>
</select>
<input type="hidden" name="edituserid" id="edituserid" value="<?php echo "$varID"; ?>" />
<input type="submit" name="edituser" id="edituser" value="Edit" />
</form>
    <?php
    if(isset($_POST['edituser'])){

    $add = $_POST['edituser'];
    $varIDe = $_POST['edituserid'];
    $errorMessage = "Jesus Christ Benton, Choose a User!!";
    $query1 = mysql_query("UPDATE users SET progress = $add WHERE UserID = $varIDe");
    mysql_query($query1) or die("Cannot update");

echo $add;
echo $varIDe;

    }
    ?>

<?php
}
?>

我不确定变量是否正常工作,或者我之前是否使用过提交按钮? 它让我有点难过。

你的查询应该是

$query1 = mysql_query("UPDATE users SET progress = '$add' WHERE UserID = $varIDe");

不要忘记引号

并且最好改变你的

mysql_query($query1) or die("Cannot update");

mysql_query($query1) or die("MySQL ERROR: ".mysql_error());

让它显示错误

编辑

发现了一些错误

mysql_numrows应该是mysql_num_rows

重大错误

$query1 = mysql_query("UPDATE users SET progress = $add WHERE UserID = $varIDe");

正在运行查询,将其更改为

$query1 = "UPDATE users SET progress = '".$add."' WHERE UserID = '".$varIDe."'";

我认为你得到了错误的变量

if(isset($_POST['edituser'])){
  $add = $_POST['edituser']; // this is a button

应该 :

if(isset($_POST['editinguser'])){
  $add = $_POST['editinguser']; // this is a select list

但请阅读以下有关SQL注入的内容

当出现问题时,关于查询,你最好调试,添加一个: or die ( mysql_error ( ) ) ; 然后显示错误消息。

$query1 = mysql_query("UPDATE `users` SET `progress` = '".$add."' WHERE UserID = '".$varIDe."'");
if(mysql_query($query1))
{
//DO SOME ACTION
}
else
{
die(mysql_error());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM