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

我理解,這是一個初學者的問題,但我無法理解爲什麼我收到此錯誤:用C VIN:(!)PHP,MySQL的未定義指數

注意:未定義指數:\ wamp \ www \ php \ viewcar.php在線10

我在MySQL數據庫中有一個VIN列,我不確定它爲什麼不顯示。請幫忙。

+1

[PHP:「注意:未定義的變量」,「注意:未定義的索引」和「注意:未定義的偏移量」)的可能的重複(http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-notice-undefined-index-and-notice-undef) –

+1

**警告:這有一些嚴重的[SQL注入漏洞](http://bobby-tables.com/ ),因爲在查詢中使用了「$ _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行的錯誤,這意味着沒有物品在您的$_GET陣列中索引爲'VIN'。防止這種錯誤最簡單的方法是這樣的

<?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和準備好的聲明顯示。您可以在這裏瞭解更多關於使用PDO的信息http://php.net/manual/en/book.pdo.php