0

私はphpコードのこのセクションを持っています:

$dcs = mysql_query("SELECT `locations.l_name`, `locations.location_id`
                    FROM `locations`, `cabinet`
                    WHERE `locations.location_id` = `cabinet.datacentre_id`
                    GROUP BY `locations.location_id`
                    ORDER BY `locations.l_name`");
while ($row = mysql_fetch_array($dcs)) {
echo '<option value="' .$row['location_id']. '">' .htmlspecialchars($row['l_name']). '</option>';                               }

しかし、実行すると次のエラーが発生します。

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

これはコードではなく、データベースの問題であると確信しています..問題の可能性はありますか? または、何に注意する必要がありますか?

4

2 に答える 2

3

あなたのSELECTクエリは正しくありません。サーバーが列名を見つけることができなかった原因として、テーブル名と列名をラップしています。それらは個別に包装する必要があります。

SELECT  `locations`.`l_name`, 
        `locations`.`location_id`
FROM    `locations`, `cabinet`
WHERE   `locations`.`location_id` = `cabinet`.`datacentre_id`
GROUP   BY `locations`.`location_id`
ORDER   BY `locations`.`l_name`

それらのどれも mysql で予約済みのキーワードではないため、backticksオプションです。

SELECT  locations.l_name, 
        locations.location_id
FROM    locations, cabinet
WHERE   locations.location_id = cabinet.datacentre_id
GROUP   BY locations.location_id
ORDER   BY locations.l_name

もう 1 つ、結合の新しい構文を使用してください。

SELECT  locations.l_name, 
        locations.location_id
FROM    locations 
        INNER JOIN cabinet 
            ON locations.location_id = cabinet.datacentre_id
GROUP   BY locations.location_id
ORDER   BY locations.l_name
于 2013-03-18T09:18:28.107 に答える
0

私にとってはうまくいきます...もちろん、このPHPメソッドは「非推奨」であることに注意してください!...

<?php

 include('path/to/connection/stateme.nts');
 $query = "
 SELECT DISTINCT l.l_name
               , l.location_id
            FROM locations l
            JOIN cabinet c
              ON c.datacentre_id = l.location_id  
           ORDER 
              BY l.l_name;
              ";

 $result = mysql_query($query) or die(mysql_error());

 while ($row = mysql_fetch_array($result)) 
 {
 echo '<option value="' .$row['location_id']. '">' .htmlspecialchars($row['l_name']). '</option>';
 }
 ?>
于 2013-03-18T09:30:00.687 に答える