使用PHP和MYSQL更新表

时间:2012-03-02 00:21:33

标签: php mysql

<?php require("inc_connect.php"); ?>
<h1 align="center">Farris Website</h1>
<hr width="1000">
<p align="center">

<table align="center" width="1000" border="3" bordercolor="#0066FF" >
    <tr>
        <td align="left" valign="top">
        <form name="update" method="post" action="ex_update.php?id=<?php echo urlencode($_POST['id']); ?>">
          <p><strong>Enter Name:</strong>
            <input type="text" name="name">
            <br />
            ID: 
            <label for="select"></label>
            <select name="id">
            <?php 
                $query = "SELECT * FROM test";
                $run = mysql_query($query);
                while($output = mysql_fetch_array($run)){
                echo "<option value=\"{$output['id']}\">{$output['id']}</option>";}
            ?>
            </select>
          </p>
          <p>
            <input type="submit" name="submit" value="Update!">
          </p>
        </form></td>
        <td width="300" align="left" valign="top"><?php include("inc_output.php"); ?></td>
    </tr>
</table>

</p>

以上是索引页......

<?php

$connect = mysql_connect("localhost","root","");
$sel_database = mysql_select_db("test");

$name = mysql_real_escape_string( $_POST["name"] );
$id = (int) $_GET['id'];

$query = "UPDATE test SET name='{$name}'";
if($run = mysql_query($query)){
    header("location: index.php");
    exit;
    }else{mysql_error();}


?>

这是处理表单的页面。

问题是如果我设置id = {$ _ GET ['id']}

,记录将不会更新

如果删除该部分,则会更新所有行。

所以根据id ...

进行更新

先谢谢

FarrisFahad

3 个答案:

答案 0 :(得分:0)

尝试将表单操作更改为

<form name="update" method="post" action="ex_update.php?id=<?php echo urlencode($_GET['id']); ?>">

此外,执行$ query的回显可能有助于调试您的问题。

答案 1 :(得分:0)

首先,请注意SQL注入 - 您的代码对它很开放。见http://bobby-tables.com/

PHP代码

<?php

$connect = mysql_connect("localhost","root","");
$sel_database = mysql_select_db("test");

$name = mysql_real_escape_string( $_POST["name"] );
$id = (int) $_GET['id'];

$query = "UPDATE test SET name='{$name}' WHERE id = {$id}";
if($run = mysql_query($query)){
  header("location: index.php");
  exit;
}else{
  # In production, don't show raw errors to users - log them to a file and
  # present the user with a generic "There was a problem with the database"
  # error. Or people can start sniffing for vulnerabilities in your site.
  echo mysql_error();
}

?>

<?php

require("inc_connect.php");

?>
<h1 align="center">Farris Website</h1>
<hr width="1000">
<p align="center">
  <table align="center" width="1000" border="3" bordercolor="#0066FF" >
    <tr>
      <td><form name="update" method="post" action="ex_update.php?id=<?php echo urlencode($_GET['id']); ?>">
        <p><strong>Enter Name:</strong>
          <input type="text" name="name"><br />
          <label for="select">ID:</label>
          <select name="id" id="select">
<?php 
  $query = "SELECT * FROM test";
  $run = mysql_query($query);
  while( $r = mysql_fetch_array($run) ){
    # I always use short, single character, variables when in loops.
    # Saves alot of characters and potential confusion.
    echo "          <option value='{$r['id']}'>{$r['id']}</option>\n";
  }
?>
          </select>
        </p>
        <p>
          <input type="submit" name="submit" value="Update!">
        </p>
      </form></td>
      <td><?php include("inc_output.php"); ?></td>
    </tr>
  </table>
</p>

答案 2 :(得分:0)

您要更新从下拉列表中选择的记录。此外,您已将表单方法设置为POST。所以你应该尝试以下:

<form name="update" method="post" action="ex_update.php?id=<?php echo urlencode($_POST['id']); ?>">