如何从html表单更新MySql中的表字段的值?

时间:2012-08-12 12:29:40

标签: php mysql

我想在过去两天更新数据库中的表格。但我无法让它发挥作用。有人请帮帮我。 我可以连接到我的数据库,完美地查看我的表字段。可以从目标PHP文件中完整地读取表单中的已发布值。 没有看到MySQL查询返回任何错误。 但我不明白为什么这些值没有更新到表中。

//form.html

        <form name="account" action="test.php" method="post">
    <td align="left" valign="top" class="labelstyle" width="25%">First Name</td>
                                          <td align="left" valign="top" class="labeltextstyle" width="75%"><input type="text" name="fname" value="" /></td>
    <td align="left" valign="top" class="labelstyle" width="25%">Last Name</td>
                                          <td align="left" valign="top" class="labeltextstyle" width="75%"><input type="text" name="lname" value="" /></td>
    <td align="left" valign="top" class="labelstyle" width="25%">Email</td>
                                          <td align="left" valign="top" class="labeltextstyle" width="75%"><input type="text" name="email" value="" /></td>


    <td  align="left" valign="top" class="labeltextstyle"><input type="submit" name="submit" value="Save" /></td>

    </form>

// test.php
    <?php

    $dbhost = "localhost"; 
    $dbname = "test"; 
    $dbuser = ""; 
    $dbpass = "";

    mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error()); 
    mysql_select_db($dbname) or die(mysql_error()); 

    session_start();
    if(isset($_REQUEST['submit'])){

    // $query = "select * from form";
    // $result = mysql_query($query);
    // $numcolumn = mysql_num_fields($result);
    // for ( $i = 0; $i < $numcolumn; $i++ ) {
    // $columnnames = mysql_field_name($result, $i);
    // echo $columnnames;
    // }


    $fname = $_POST['fname']; 
    $lname = $_POST['lname'];  
    $email = $_POST['email'];

    echo $fname ;
    echo $lname ;
    echo $email ;

    $query = "update test set
               fname = $fname,
               lname = $lname,
               email = $email
               where 1 ";

    $result = mysql_query($query); 

    if ($query = 1) { 

    echo "IT WORKED"; 

    } else { 
    echo "DIDNT WORK";
    } 
    }else{
     echo "NOT SUBMITTED";
     }

?>

//form.html

<form name="account" action="test.php" method="post">
<td align="left" valign="top" class="labelstyle" width="25%">First Name</td>
                                      <td align="left" valign="top" class="labeltextstyle" width="75%"><input type="text" name="fname" value="" /></td>
<td align="left" valign="top" class="labelstyle" width="25%">Last Name</td>
                                      <td align="left" valign="top" class="labeltextstyle" width="75%"><input type="text" name="lname" value="" /></td>
<td align="left" valign="top" class="labelstyle" width="25%">Email</td>
                                      <td align="left" valign="top" class="labeltextstyle" width="75%"><input type="text" name="email" value="" /></td>


<td  align="left" valign="top" class="labeltextstyle"><input type="submit" name="submit" value="Save" /></td>

</form>

当我用表格A,B和C填写表格并提交表格时,我得到以下输出。

fnamelnameemailABCIT WORKED

请尽快帮助我。

2 个答案:

答案 0 :(得分:1)

where子句中没有id来指示必须更新哪一行。这将更新表中的所有行。它应该是这样的:

 $query = "update test set
               fname = $fname,
               lname = $lname,
               email = $email
               where id = 1";

我假设事先创建了一行,以便您知道要更新哪一行。如果没有,那么应该使用INSERT语句。

$query = "insert into test (fname,lname,email) VALUES ($fname,$lname,$email);

答案 1 :(得分:0)

fname,lname和email是字符串,必须在SQL查询中进行转义:

 $query = "update test set
           fname = '$fname',
           lname = '$lname',
           email = '$email'
           where 1";

你可能也可以离开那里的地方。