0

在过去的两天里,我正在尝试更新我的数据库中的一个表。但我无法让它工作。有人请帮助我。我可以连接到我的数据库,完美地查看我的表格字段。表单中的发布值可以从指定的 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

请尽快帮助我。

4

2 回答 2

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);
于 2012-08-12T12:46:49.390 回答
0

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

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

您可能也可以离开 where 1 。

于 2012-08-12T12:41:05.187 回答