2017-03-07 2 views
-1
9 <?php include 'db.php'; 
10 $vin = $_GET['VIN']; 
11 $query = "SELECT * FROM INVENTORY WHERE VIN='$vin'"; 

は、私は、これは初心者の問題であることを理解が、私はこのエラーを受けていますなぜ私が悩みの理解を持っている:PHP、MySQLの未定義のインデックス

お知らせ(!):未定義のインデックス:CでのVIN :\ wamp \ www \ php \ viewcar.php on line 10

私はMySQLデータベースにVIN列を持っていますが、なぜ表示されないのか分かりません。助けてください。

+1

[PHP: "Notice:未定義変数"、 "Notice:未定義インデックス"、および "Notice:Undefined offset"](http://stackoverflow.com/questions)を参照してください。 /警告通知**:これにはいくつかの重大な[SQLインジェクションのバグ]があります(http://bobby-tables.com/(英語)/ 4261133/php-notice-undefined-変数 - 通知 - 未定義 - インデックスおよび通知 - undef) –

+1

**警告**: ) '$ _GET'データがクエリの内部で使われているからです。可能な限り**準備文**を使用してください。これらは[mysqli](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[PDO](http://php.net/manual/)で行うのはかなり簡単です。 en/pdo.prepared-statements.php)ここでユーザが提供するデータは '? 'または':name'のインジケータで指定され、後で 'bind_param'や' execute'を使ってデータを入力します。 **決して '$ _POST'または' $ _GET'データを直接クエリに入れないでください。 – tadman

答えて

0

(PHPの場合)$_GETは連想配列であるため、$_GET['VIN']の場合、インデックスは'VIN'です。 $_GETはurlで渡されたパラメータで満たされていますが、httpサーバの処理方法を変更することは可能ですが、最も一般的なパラメータはhttp://yoursite.com/mypage.php?parameter1=value1&parameter2=value2 です.10行目でエラーが発生しているので、インデックス'VIN'$_GETの配列でこのエラーを回避する最も簡単な方法はまた、あなたが私の例では、私はPDOとプリペアドステートメントを使用して示した。今までので、あなたのクエリを連結するべきではないことに注意してください。この

<?php include 'db.php'; 
    if(isset($_GET['VIN'])){ 
     $vin=$_GET['VIN']; 
     $query="SELECT * FROM INVENTORY WHERE VIN=:vin"; 
     $stmt=$pdo->prepare($query); 
     $stmt->bindParam(':vin',$vin); 
     $products = array(); 
     if ($stmt->execute()){ 
      //handle results 
     } 
    }else{ 
     //handle VIN not being set 
    } 

ようなものになるだろう。ここでPDOを使用する方法の詳細については、http://php.net/manual/en/book.pdo.php

関連する問題