2009-11-30 22 views
0

未定義指數我有郵寄到數據庫發送錯誤使用文本數據中的錯誤「注意:UNDEFINED INDEX ON LINE」PHP-MySQL的:李羣

我怎樣才能解決這個問題?

這是我的代碼:

<?php 
error_reporting(0); 
$con = mysql_connect("localhost","root",""); 

mysql_select_db("hello", $con); 

$result = mysql_query("SELECT Max(id) as id from `aoa` WHERE 1"); 

$row = mysql_fetch_array($result); 
    { 

    echo $row['id']; 
    } 

if($v=="") 
{ 
$v=1000; 

} 


$v=$row['id']; 

$v=$v+1; 
$id=$v; 

$sql="INSERT INTO aoa(id,name,clss) 
VALUES 
('$id','$_POST[name]','$_POST[clss]')"; 
var_dump($sql); 
if (!mysql_query($sql,$con)) 
    { 
    die('Data InsertionError: ' . mysql_error()); 
    } 
echo "Successfully Registered"; 

mysql_close($con); 
?> 

(這是我的錯誤文件)

 
Notice: C:\wamp\www\Register.php line 31 - Undefined index: clss 
Notice: C:\wamp\www\Register.php line 31 - Undefined index: name 
Notice: C:\wamp\www\Register.php line 17 - Undefined variable: v 
+1

嘿,看看 - SQL注入!泄露的數據庫連接! – 2009-11-30 10:12:02

+0

您可以發表您的表格代碼請 – 2009-11-30 10:13:24

+0

[PHP:「Notice:Undefined variable」和「Notice:Undefined index」]的可能重複(http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-和-notice-undefined-index) – 2012-12-25 11:04:36

回答

-1

你只是還沒有聲明的變量CLSS,名稱和v尚未...在你的腳本的頂部添加像

$_POST['clss'] = null; 
$_POST['name'] = null; 
$v = null; 

除此之外,你的代碼中有一些錯誤。 $ _POST值必須提供單引號或雙引號,如$ _POST ['clss']或$ _POST [「name」]。否則,你的腳本將無法按照你的意圖行事。

這應該做到這一點。

+0

不需要數組索引被引號包圍。雖然這是非常好的做法。 – Yacoby 2009-11-30 10:21:07

+0

因爲這樣做更好,除此之外,當你使用一個像樣的編輯器時,你的代碼也變得更容易閱讀;) – Ben 2009-11-30 10:23:05

+0

因爲他在POST中獲得了clss和name並將它們插入到DB中,所以它可能不是好主意,把他們設置爲null,在腳本的頂部,你不覺得嗎?儘管完全同意關於指數的報價 – jab11 2009-11-30 11:31:52

0

這不是一個錯誤,它是一個通知。您收到它們是因爲error_reportingphp.ini指令是如此設置的。您可以通過在使用前聲明變量來消除它。

1

問題與v爲未定義在這一行

if($v==""){ 
    $v=1000; 
} 

如果沒有設置$ V,它是不是「」。你可以使用例如

if(!isset($v)){ 
    $v=1000; 
} 

而且,使用的var_dump()

var_dump($_POST); 

這樣,你可以看到,如果你有「CLSS」和「名」設置,我懷疑他們檢查後旗不是。

您的代碼目前也容易受到sql injection的影響,您應該在使用sql之前對所有變量使用mysql_real_escape_string
更好的使用類似PDO