2014-09-01 162 views
0

我不斷收到這些錯誤:未定義變量錯誤

Notice: Undefined variable: voornaam in C:\xampp\htdocs\rocopdracht\database.php on line 13 

這是我的代碼:

$con=mysqli_connect("localhost","root","","rocopdracht"); 


if(isset($_POST['voornaam'])){ $voornaam = $_POST['voornaam']; } 
if(isset($_POST['achternaam'])){ $achternaam = $_POST['achternaam']; } 
if(isset($_POST['ov_nummer'])){ $ov_nummer = $_POST['ov_nummer']; } 
if(isset($_POST['wachtwoord'])){ $wachtwoord = $_POST['wachtwoord']; } 
if(isset($_POST['email'])){ $email = $_POST['email']; }; 
if(isset($_POST['telefoon'])){ $telefoon = $_POST['telefoon']; } 


mysql_query("INSERT INTO users (voornaam, achternaam, ov_nummer, wachtwoord, email, telefoon)VALUES ('$voornaam','$achternaam','$ov_nummer','$wachtwoord'.'$email','$telefoon')"); 

任何解決方案?

+3

好,'$ voornaam'只有當'$ _ POST [ 'voornaam']'設置設置。 **注意:**'mysql_'已被棄用了很長時間。使用'mysqli_'或'PDO'。 **第二個注意事項:**您很容易被SQL注入攻擊。使用預準備的語句並綁定你的變量。 **第三個注意:**你不能混合使用'mysqli_'和'mysql_'。 – h2ooooooo 2014-09-01 10:57:42

+0

$ _POST ['voornaam']是什麼?可能沒什麼。 – Daan 2014-09-01 10:57:43

+1

**提示:** ['$ voornaam = isset($ _ POST ['voornaam'])? $ _POST ['voornaam']:null;'](http://php.net/ternary#language.operators.comparison.ternary) – BlitZ 2014-09-01 10:58:20

回答

1

變量$voornaam只設置,如果有一個POST數據,因此,預初始化所有的變量,如:

$voornaam = ""; 
$achternaam = ""; 
$ov_nummer = ""; 
$wachtwoord = ""; 
$email = ""; 
$telefoon = ""; 

if(isset($_POST['voornaam'])){ $voornaam = $_POST['voornaam']; } 
if(isset($_POST['achternaam'])){ $achternaam = $_POST['achternaam']; } 
if(isset($_POST['ov_nummer'])){ $ov_nummer = $_POST['ov_nummer']; } 
if(isset($_POST['wachtwoord'])){ $wachtwoord = $_POST['wachtwoord']; } 
if(isset($_POST['email'])){ $email = $_POST['email']; }; 
if(isset($_POST['telefoon'])){ $telefoon = $_POST['telefoon']; } 
3

只有在設置了值的情況下才設置值。如果未設置變量,您可以將其分配給空值。

if(isset($_POST['voornaam'])) 
{ 
    $voornaam = $_POST['voornaam']; 
} 
else 
{ 
    $voornaam = ''; 
} 

這樣你也必須對其他變量也這樣做。

此外,您的SQL中有一個錯誤。將$email前的.更改爲,

mysql_query("INSERT INTO users (voornaam, achternaam, ov_nummer, wachtwoord, email, 
telefoon)VALUES 
('$voornaam','$achternaam','$ov_nummer','$wachtwoord','$email','$telefoon')"); 
                ^   
4

使用filter_input,而不是isset

$voornaam=filter_input(INPUT_POST, 'voornaam'); 

然後$voornaam將被定義爲null如果沒有設置$_POST['voornaam']

4

或更短:

$voornaam = isset($_POST['voornaam']) ? $_POST['voornaam'] : ""; 
$achternaam = isset($_POST['achternaam']) ? $_POST['achternaam'] : ""; 
$ov_nummer = isset($_POST['ov_nummer']) ? $_POST['ov_nummer'] : ""; 
$wachtwoord = isset($_POST['wachtwoord']) ? $_POST['wachtwoord'] : ""; 
$email  = isset($_POST['email'])  ? $_POST['email']  : ""; 
$telefoon = isset($_POST['telefoon']) ? $_POST['telefoon'] : ""; 

(!沒有identation需要)

+0

realy有用答案。 – wild 2014-09-01 11:07:02

+0

爲您的精簡答案投票 – 2014-09-01 11:08:09