0

修正された問題:ブラウザがGETリクエストをキャッシュしています。jQueryにランダムな値を追加すると、問題が修正されます。例えば:

$.get(templateDir + "/inc/quote-update.php", { FlightID: FlightID, returnorigin: valuefrom, returndestination: valueto, returnpax: valuepax, returndate: valueret, "_": $.now()},

私はこれに対する解決策をどこでも探しましたが、それを見つけることができません。これが以前に投稿されたことがある場合は、お詫び申し上げます。

問題はこれです。ユーザーがWebサイトにアクセスすると、フライトを検索します。詳細はデータベースに保存されます。これは正常に機能します。

その後、ユーザーはフライトを変更して追加することができます。これは問題なく機能します-乗客数を除いて。

どういうわけか、乗客数フィールドの更新で奇妙なバグが発生しています。値を以前の値に変更しても、更新されません。以前に変更していない値に変更すると、正常に更新されます。

たとえば、ユーザーが最初に6人の乗客のフライトを検索した後、それを4人の乗客に変更した場合、6人の乗客に戻すことはできません。ただし、3、5、7などに変更することはできます。

これがphpmyadminのフィールドの設定方法です。

4   pax bigint(20)      UNSIGNED    No  None

そしてこれは私のコードです:

<?php

    $FlightID = isset($_GET["FlightID"]) ? $_GET['FlightID'] : null;

    $db = new PDO('mysql:host=localhost;dbname=databasename', 'database-table', 'afgafha', array(PDO::ATTR_EMULATE_PREPARES => false, 
                                                                                                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    // Start a counter for errors
    $error = 0;

    if (!is_null($FlightID)) {

            $stmt = $db->prepare("SELECT * FROM database-table WHERE FlightID = ?");
            $stmt->execute(array($FlightID));

            if ($stmt->rowCount() <= 0){ 

                        // Do Nothing //

                                        } elseif ($stmt->rowCount() == 1){      

                                                        $origin = isset($_GET['origin']) ? $_GET['origin'] : null;
                                                        $destination = isset($_GET['destination']) ? $_GET['destination'] : null;
                                                        $pax = isset($_GET['pax']) ? $_GET['pax'] : null;       
                                                        $depdate = isset($_GET['depdate']) ? $_GET['depdate'] : null;                   


                                                            if (!is_null($origin) && !is_null($destination) && !is_null($pax) && !is_null($depdate)){

                                                                    $data = array($origin, $destination, $depdate, $pax, $FlightID);  
                                                                    $stmt = $db->prepare("UPDATE database-table SET origin=?, destination=?, depdate=?, pax=? WHERE FlightID=?");
                                                                    $stmt->execute($data);

                                                                    $affected_rows = $stmt->rowCount();

                                                                    echo $affected_rows.' were affected';
                                                                    print_r ($data);

                                                            } else {
                                                                    // Validation failed
                                                                    $error++;
                                                            }

                                        } else { 
                                                $error++;           
                                        }
    } else {
            $error++;
    }
    if($error > 0) {

    }
    ?>

誰かアイデアはありますか?これが本当にnoobの問題である場合は申し訳ありませんが、PHP/SQLアプリケーションを自分で作成するのはこれが初めてでした。

そして事前に-ありがとう!

4

2 に答える 2

0

ばかげているかもしれませんが、テーブルにpaxandRpaxフィールドがありreturnpax、php コードで名前が付けられたフィールドを更新しています。

編集:

この情報を共有するためだけにcache: false、JQuery 呼び出しで設定を使用してキャッシュを回避できます。基本的に と同じことを行いますが$.now()、私にはよりきれいに聞こえます。とにかく、解決してよかったです。

于 2013-01-02T11:53:50.763 に答える
0

wpdev_flights はどのように定義されていますか? 主キーに関係している可能性があると思います...スクリプトを数回実行した後、テーブルはどのように見えますか? 1 つの FlightID に対してテーブルに複数の行がありますか? 複数の行が存在する場合、これは動作を説明します。値に一致する行が存在する場合、UPDATE は何もしません。

于 2013-01-02T11:36:49.590 に答える