-1

1 : 自分のデータベースがかなり混乱していることはわかっていますが、アクセス権がありません。私は彼らが安っぽい造りであることを知っています。

2 : データベースと 2 つのテーブルがあります: http://www.freeimagehosting.net/iu741

3 : 3 つのダイナミクス リストを取得しました。最初の 2 つは問題ありませんが、3 つ目のリストで問題が発生しました。

4 : 私の爆発はこのフィールド (22312,123,2145,1233) でよくできており、それらの結果を取得し、json_encode で JS に送信し、JS はそれらの resylts を選択/オプションに送信します。私の結果は次のとおりです。 http://www.freeimagehosting.net/gltie

5: したがって、このリストを機能的なままにして、数値を値に入れたいのですが、ホステルの名前はオプション (表示) に入れます。


私のコードJS:

$(function(){
        $('#destination').change(function(){
            $.getJSON('/dev/select2.php', {'destination': $(this).val()}, function(data) {
                var items = '';
                $.each(data, function(key, val) {
                   items += '<option value="' + val + '">' + val + '</option>';
                });
                $('#hotel').html(items);
            });
        });
    });

私のコードphp:

$requete = "SELECT DISTINCT deHotels FROM sirev_Dests WHERE deDestName = '". $_GET['destination'] ."' ORDER BY deDestName";
    $connect = mysql_connect("&&&&&&","&&&&&&","&&&&&&");

    mysql_select_db("&&&&&&", $connect);

    $res = mysql_query($requete) or die(mysql_error());

    if ($res) {
        $row = mysql_fetch_assoc($res);
        $items = explode(',', $row['deHotels']);        
/*
    $newrequete = "SELECT hoName FROM sirev_Hotels WHERE hoCode = $items ";
    $donewrequete = mysql_query($newrequete) or die(mysql_error());
*/      
        die(json_encode($items));
    }

実際、私はJSで良い結果を送るのに苦労しました。値とオプションで数値を送信できますが、2次元テーブルを作成してjsonエンコードで送信する方法がわかりません...しばらくの間、2番目のリクエストをコメントに入れました。

誰かが私を助けることができますか?私は十分に明確であることを願っています..ちなみに私の英語で申し訳ありません.私はケベック市から来ました.

4

2 に答える 2

1
  1. コードは SQL インジェクションに対して脆弱です。SQL で評価されないパラメーターとして変数を渡す準備済みステートメント実際に使用する必要があります。私が何を話しているのか、またはそれを修正する方法がわからない場合は、Bobby Tablesの話を読んでください。

  2. 古い MySQL 拡張機能を使用した新しいコードの記述を停止してください。これはもはや維持されておらず、コミュニティは非推奨プロセスを開始しています。代わりに、改善されたMySQLi拡張機能またはPDO抽象化レイヤーのいずれかを使用する必要があります。

  3. SQL 結合について学習します。

  4. 次のいずれかを持つようにスキーマを変更するように努力する必要があります

    • ホテル テーブル内の目的地の外部キー (ホテルが複数の目的地に関連付けられていない場合)。また

      ALTER TABLE sirev_Hotels
       ADD COLUMN hoDestination INT,
       ADD FOREIGN KEY hoDestination REFERENCES sirev_Dests (deDestCode)
      
    • 目的地とホテルの関係のテーブル (ホテルが複数の目的地に関連付けられる場合)。

      CREATE TABLE sirev_DestinationHotels (
        dehoDestination INT,
        dehoHotel INT,
        FOREIGN KEY dehoDestination REFERENCES sirev_Dests  (deDestCode),
        FOREIGN KEY dehoHotel       REFERENCES sirev_Hotels (hoCode)
      )
      
  5. それが不可能な場合はFIND_IN_SET()、結合基準として MySQL の関数を使用できます。

    SELECT hoCode, hoName
    FROM   sirev_Hotels
      JOIN sirev_Dests ON FIND_IN_SET(sirev_Hotels.hoCode, sirev_Dests.deHotels)
    WHERE  sirev_Dests.deDestName = ?
    
  6. テーブルを結合し、目的の目的地にあるすべてのホテルのhoCodeとを取得hoNameしたら、結果セット outputting をループして、必要に応じて<option value="$hoCode">$hoName</option>適用できますhtmlentities()

于 2012-06-04T12:51:00.523 に答える
0

$values = 配列(); While($row = mysqli_fetch_array($result)) { $values[] = array($row,$secondValue); }

疑似コード。ギャップを埋める必要がありますが、それが役立つことを願っています

于 2012-06-04T12:50:48.760 に答える