0

データベース内のエントリの ID に基づいて SQL サーバーからデータを取得するスクリプトを作成しようとしています。エントリのリンクを使用してページにアクセスしようとするとid、ID を認識しないかのように返されます。以下はphpコードです:

<?php
    require('includes/config.inc.php');
    require_once(MYSQL);
    $aid = FALSE;
    if (isset($_GET['aid']) && filter_var($_GET['aid'], FILTER_VALIDATE_INT, array('min_range' => 1)) ) {
          $aid = $_GET['aid'];
          $q = "SELECT aircraft_id, aircraft_name AS name, aircraft_type AS type, tail_number AS tn FROM aircraft USING(aircraft_id) WHERE aircraft_id = $aid";
          $r = mysqli_query($dbc, $q);
          if (!(mysqli_num_rows($r) > 0)) {
            $aid = FALSE;
          }
    }// end isset tid

    if ($aid) {
        while ($acdata = mysqli_fetch_array($r, MYSQLI_ASSOC)){
            echo'<h2>'. $acdata['tail_number'] .'</h2>';
        }
    } else {
      echo '<p>This pages was accessed in error.</p>';
    }
?>

ヒントはありますか?

4

3 に答える 3

1

var_dump($q);前にクエリを調べてから、 phphmyadmin$r = mysqli_query($dbc, $q);または MySQL サーバー ターミナルで直接実行して、何が返されるかを確認してください。

アップデート:

var_dump($q);die();ダンプ後にスクリプトの実行を停止するために使用します。

于 2012-09-03T09:16:26.637 に答える
0

クエリでフィールドエイリアスを使用しているため、エコーでそれを使用して次のことを行う必要があります。

echo'<h2>'. $acdata['tn'] .'</h2>';
于 2012-09-03T09:18:12.400 に答える
0

を取り除くとUSING(aircraft_id)、エラーが発生し、クエリが実行されません。

"SELECT aircraft_id, aircraft_name AS name, aircraft_type AS type, tail_number AS tn FROM aircraft WHERE aircraft_id = $aid"

以前のバージョンのクエリの残り物だと思いますか? Using (id)のショートカットです

FROM
foo
INNER JOIN bar ON foo.id = bar.id

結合するテーブルが同じ名前の列で結合されている場合に使用できます。短く書くだけです。

参加していないため、削除する必要があります。

于 2012-09-03T09:18:56.813 に答える