0

過去2日間、DB内のテーブルを更新しようとしています。しかし、私はそれを機能させることができません。誰か助けてください。データベースに接続できました。テーブルフィールドを完全に確認できました。フォームから投稿された値は、宛先の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が機能しました

すぐに助けてください。

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";

おそらくwhere1を残すこともできます。

于 2012-08-12T12:41:05.187 に答える