-1

編集ユーザーに問題があります。送信ボタンをクリックすると、「SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルを参照して、1 行目の近くで使用する正しい構文を確認してください」というエラー コードが表示されます。それ。私のコードで何が起こったのかわかりません。私はそれを何度もデバッグしようとします。

<?php
//set session start
session_start();

function renderForm($UID,$Username,$Unitno,$Cont,$PW,$UEmail,$UPay,$JD,$PD)
    {?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><link href="styles/style1.css" media="screen" rel="stylesheet" title="CSS" type="text/css" /></head><body><!-- Begin Container -->
    <div id="container">
        <!-- Begin Masthead -->
        <div id="masthead">

        </div>
        <!-- End Masthead -->

        <!-- Begin Navigation -->
        <div id="navigation">
            <ul>
                <li><a href="homepage.php">Home Page</a></li>
                <li><a href="notice.php">Notice</a></li>
                <li><a href="feedback.php">Feedback</a></li>
                <li><a href="user.php">User</a></li>
                <li><a href="logout.php">Logout</a></li>
            </ul>
        </div>
        <!-- End Navigation -->

        <!-- Begin Content -->
        <div id="content">
            <!-- #BeginEditable "content" -->
            <h1>Edit User</h1>

            <hr/>

            You are on: 
                <a href="user.php">User</a>

            <br/>

            <form action="" method="post">
                <table align="center">
                <tr>
                <p align = "center"><strong>User ID: </strong> <?php echo $UID?></p><br/>
                    <td align = "right">

                    <strong>User Name: </strong> <input type="text" name="UserName" value = "<?php echo $Username; ?>" /><br/>
                    <strong>Unit No: </strong> <input type="text" name="UnitNo" value = "<?php echo $Unitno; ?>" /><br/>
                    <strong>Contact: </strong> <input type="text" name="Contact" value = "<?php echo $Cont; ?>" /><br/>
                    <strong>Password: </strong> <input type="text" name="Password" value = "<?php echo $PW; ?>" /><br/>
                    <strong>Email: </strong> <input type="text" name="UserEmail" value = "<?php echo $UEmail; ?>" /><br/>
                    <strong>User Pay: </strong> <input type="text" name="UPayment" value = "<?php echo $UPay; ?>" /><br/>
                    <strong>Join Date: </strong> <input type="text" name="JoinDate" value = "<?php echo $JD; ?>" /><br/>
                    <strong>Pay Date: </strong> <input type="text" name="PayDate" value = "<?php echo $PD; ?>" /><br/>

                    <input type="submit" name="submit" value="Submit">

                    </td>
                    </tr></table>
            <br/>

            <hr/>
        </div>
        <!-- End Content -->

        <!-- Begin Footer -->
        <div id="footer">
            <p>
                Copyright &copy; 2012 Condominium Management. All Rights Reserved.
            </p>
        </div>
        <!-- End Footer -->
    </div>
    <!-- End Container -->
</body>
</html><?php


include ("connection_db.php");



                        if(isset($_POST['submit']))
                        {

                        if (is_numeric($_POST['UID']))
                        {
                            $UserID = $_POST['UserID'];
                            $UserName= mysql_real_escape_string(htmlspecialchars($_POST['UserName']));
                            $UnitNo = mysql_real_escape_string(htmlspecialchars($_POST['UnitNo']));
                            $Contact = mysql_real_escape_string(htmlspecialchars($_POST['Contact']));
                            $Password= mysql_real_escape_string(htmlspecialchars($_POST['Password']));
                            $UEmail = mysql_real_escape_string(htmlspecialchars($_POST['UserEmail']));
                            $UPayment = mysql_real_escape_string(htmlspecialchars($_POST['UPayment']));
                            $JoinDate= mysql_real_escape_string(htmlspecialchars($_POST['JoinDate']));
                            $PayDate = mysql_real_escape_string(htmlspecialchars($_POST['PayDate']));
                        }
                        else
                        {
                            $sql = "UPDATE User SET UserName='$UserName', UnitNo='$UnitNo', Contact='$Contact', Password='$Password', UserEmail='$UEmail', UPayment='$UPayment', JoinDate='$JoinDate', PayDate='$PayDate' where UserID = $UserID";

                            mysql_query($sql) or die(mysql_error());
                            header("Location:user.php");
                        }
                        }
                        else
                        {
                        if(isset($_GET['UserID']) && is_numeric($_GET['UserID']) && $_GET['UserID']>0)
                        {
                        $uid = $_GET['UserID'];
                        $result = mysql_query("SELECT * FROM User Where UserID = $uid") or die (mysql_error());
                        $row = mysql_fetch_array($result);

                        if($row)
                        {
                        $UID = $row['UserID'];
                        $Username = $row['UserName'];
                        $Unitno = $row['UnitNo'];
                        $Cont = $row['Contact'];
                        $PW = $row['Password'];
                        $UEmail = $row['UserEmail'];
                        $UPay = $row['UPayment'];
                        $JD = $row['JoinDate'];
                        $PD = $row['PayDate'];

                        renderForm($UID, $Username, $Unitno, $Cont, $PW, $UEmail, $UPay, $JD, $PD, '');
                        }
                        else
                        {
                        echo "No result";
                        }
                        }
                        else
                        {
                        echo 'Error';
                        }
                        }?>
4

3 に答える 3

1

私は2つの間違いを見ます。

  1. を参照し$_POST['UserID']ますが、UserID という名前のフィールドはなく、UID のみです。
  2. UPDATE ステートメントで呼び出される変数を使用します$UserIDが、この変数は他のコード パスによってのみ設定されるため、UPDATE の実行時に初期化されていないため、おそらく空の文字列です。

問題を引き起こしているのは2番目だと思います。UPDATE ステートメントはおそらく で終わっていwhere UserID =ます。しかし、他の人が言ったように、確実に伝える唯一の方法は、クエリを印刷して、何が問題なのかを確認することです。

一般に、SQL の問題をデバッグするには、次のことを行う必要があります。

  1. コードを変更して、すべての SQL クエリを出力します。
  2. クエリを調べて、どのクエリに問題があり、どこに間違いがあるかを判断できるかどうかを確認します
  3. そうでない場合は、手動で実行して、どれが機能し、どれが機能しないかを確認してください
  4. クエリ文字列にバグが見つかったら、そのバグの原因となったクエリ文字列の作成の何が問題だったのかを確認します。
  5. 修理する
于 2012-04-05T08:13:10.173 に答える
1

実際に sql ステートメントを出力する必要があります。

$sql = "UPDATE User SET UserName='$UserName', UnitNo='$UnitNo', Contact='$Contact', Password='$Password', UserEmail='$UEmail', UPayment='$UPayment', JoinDate='$JoinDate', PayDate='$PayDate' where UserID = $UserID";

echo "MY QUERY: ".$sql;
mysql_query($sql) or die(mysql_error());
header("Location:user.php");

結果を投稿してください。エラーを簡単に検出できると思います。

更新:$UserIDが定義されている (空でない) ことを確認し、セミコロンを追加します。

$sql = "UPDATE User SET UserName='$UserName', UnitNo='$UnitNo', Contact='$Contact', Password='$Password', UserEmail='$UEmail', UPayment='$UPayment', JoinDate='$JoinDate', PayDate='$PayDate' where UserID = '$UserID' ;";

于 2012-04-05T08:08:30.837 に答える