0

我正在尝试使用 PHP 和 MySQL 使用预定义的值更新一行中的特定记录。我不想使用“输入”,因为我的新值是在代码中定义的。

表学生

 id     name     grade   
 1      dave     b       Update< hyperlink to update.php
 2      mark     c       Update
 3      john     e       Update
 4      thomas   d       Update

单击“更新”后,我希望特定行的等级值在每种情况下都更改为恒定值“a”。因此,假设我在 ID 为“1”和“2”的行中单击了更新。

期望的结果:

 id     name     grade   
 1      dave     a       Update
 2      mark     a       Update
 3      john     e       Update
 4      thomas   d       Update 

我确实知道如何使用我自己插入数据然后提交的输入字段来做到这一点。但是,我需要在单击更新时更改数据。

这就是我显示数据的方式:

  while ($row=mysql_fetch_array($result)){
    echo ("<tr><td>$row[id]</td>");
    echo ("<td>$row[name]</td>");
    echo ("<td>$row[grade]</td>");
    echo ("<td><center><a href=\"udapte.php?id=$row[id]\">Update</a></center></td></tr>");

更新.php

// Connect to server and select databse.

$order = "UPDATE students 
      SET grade='a' 
      WHERE id='id'";
mysql_query($order);

我知道 mysql_* 不是最安全的方法。但是,一旦我一切正常,我将修改 php 以使用 PDO。谢谢帮助

4

2 回答 2

1

通过链接的 href 传递要更新的记录的 id。

1st,在page.php中用php创建那些链接。Rose 链接调用相同的页面,但在 url 中带有附加参数。
该代码假设您的所有记录都存储在数组 $rows...

foreach ($rows as $row) {

    $h = $row['name'] . ', grade: ' . $row['grade'];
    $h.= ' <a href="page.php?do=update&id=' . $row['id'] . '">change grade</a>';
    echo $h . '<br />';

}

然后,在 page.php 的开头:

if (isset($_GET['do']) && $_GET['do'] == 'update'] && isset($_GET['id])) {

  // enter your update code here
  // pls use mysqli_ or PDO instead of deprecated mysql_!

}
于 2013-03-18T13:20:42.780 回答
0

如果要在单击更新后直接更改数据,则必须使用从 update.php 重定向回页面

header('location:currentpage.php');

或者您可以使用 Ajax。

如果您的代码与您在上面预先提供的代码完全一样:

$order = "UPDATE students 
  SET grade='a' 
  WHERE id='id'";
 mysql_query($order);

问题是您错过了 id 变量附近的美元符号 ($)。它应该是

  ... id='$id'";
于 2013-03-18T13:18:32.313 回答