-1

1:我知道我的数据库很乱,但我没有访问权限。我知道他们是蹩脚的。

2:有我的数据库和我的 2 个表:http://www.freeimagehosting.net/iu741

3:我得到了 3 个动态列表,前 2 个还可以,但我的第三个有问题。

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 中发送好结果。我可以发送值和选项中的数字,但我不知道如何构建二维表并将其发送到我的 json 编码......我暂时将我的第二个请求放在评论中。

有人能帮我吗?我希望我足够清楚......顺便说一下我的英语,我来自魁北克市。

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. 如果这不可能,您可以使用 MySQL 的FIND_IN_SET()函数作为连接标准:

    SELECT hoCode, hoName
    FROM   sirev_Hotels
      JOIN sirev_Dests ON FIND_IN_SET(sirev_Hotels.hoCode, sirev_Dests.deHotels)
    WHERE  sirev_Dests.deDestName = ?
    
  6. 加入表格并获得所需目的地的所有酒店的hoCodehoName之后,您可以循环输出结果集<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 回答