2013-03-26 182 views
-1

這句話有什麼不對嗎?未定義索引

錯誤回報:

說明:未定義指數:inputBlock

說明:未定義指數:inputHouseUnit

代碼:

if($conn){ 
    $insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('$_POST[inputBlock]', '$_POST[inputHouseUnit]')"; 
} 
+0

請勿直接使用'$ _POST',在您的查詢中未驗證。 – 2013-03-26 07:26:37

+0

它說你沒有在$ _POST這些名字的關鍵 - >檢查是否有任何東西在你的'$ _POST',我認爲執行這些代碼發生在發佈 – 2013-03-26 07:28:20

+0

之前,你可以嘗試''或'1'='1 '/ *''或'; DROP TABLE tablename'它真的很神奇,我的意思是你的代碼容易受到sql注入的影響,請逃脫所有請求,如果你不想讓其他人去pow3ed你的數據庫 – 2013-03-26 07:39:12

回答

0
$insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('".$_POST['inputBlock']."', '".$_POST['inputHouseUnit']."')"; 
1

PHP數組索引或者是數或字符串。

如果inputBlockinputHouseUnit是字符串變量的標識,那麼你必須用$他們之前(例如,$_POST[$inputBlock])。

如果它們是文字字符串,請將它們包裝在'(單引號)或"(雙引號)(例如$_POST["inputBlock"])中。

顯然,你將不得不小心轉義單引號和雙引號。另外,您應該在嘗試將其放入數據庫之前驗證用戶輸入。

+0

你對文本字段的名稱進行了什麼分類? – 2013-03-26 07:34:24

+0

@Bryan對不起,我不明白? – Tushar 2013-03-26 07:35:04

+0

inputBlock是文本字段的名稱/標識。在這種情況下,它是否被認爲是文字串? – 2013-03-26 07:47:09

0

是的。它應該看起來像這樣

if($conn){ 
    $insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('" . $_POST["inputBlock"] . "', '" . $_POST["inputHouseUnit"] . "')"; 
} 

我使用了字符串連接,所以你不必轉義引號。

您還應該考慮將原始發佈數據傳遞到數據庫中的安全性非常不安全 - 永遠不要信任您的用戶。

+0

爲什麼在這個問題上每個人都沒有明確的理由或評論爲什麼這樣做呢? – Pankucins 2013-03-26 12:52:42

0

這裏的所有答案都是錯誤的。甚至與這個問題相矛盾,在那裏明確表示inputBlock被認爲是數組索引。

這句話有什麼不對嗎?

沒有。你的陳述完全有效。

你得到這些消息的原因是空的$ _POST數組。很可能你用GET方法調用了這段代碼。

把你的代碼放到這個if語句:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // your code goes here 
} 

此外,你必須總是正確地格式化您的查詢。至少方式描述here

0

確保這些瓦爾正在從

$ _ POST [inputBlock給進 $ _ POST [inputHouseUnit]

給了$ SQL之前對他們的打印。

此外,請確保您的方法= POST指定。如果沒有,這些變量將被作爲GET。

0

存放在獨立的變量個體後操作的值,然後在echo功能使用它們...這樣...

$x=$_POST[inputBlock]; 
<br>$y=$_POST[inputHouseUnit]; 

然後替換在echo函數變量....

而且還是檢查POST方法接收任何價值不怎麼一回事,因爲你可能剛剛只發送一個值,你的PHP網頁... 未定義的指標往往是反擊時,變量不從$_POST陣列得到任何價值。