2015-10-24 59 views
0

下面的PHP文件旨在讓有人可以向數據庫提交評論,包括他們的名字,姓氏和電子郵件地址。然而,當我嘗試提交測試評論,我得到以下錯誤:未定義索引PHP和MYSQL

Notice: Undefined index: fname in \comments.php on line 20 

Notice: Undefined index: lname in \comments.php on line 20 

Notice: Undefined index: eaddress in \comments.php on line 20 

Notice: Undefined index: comment \comments.php on line 20 

現在我什麼之後真的有我困惑的是同樣的邏輯爲另一種形式的填補了不同的數據庫和一個作品沒問題。 PHP和SQL對我來說都是非常新的,所以我認爲我會忽視簡單的事情。然而,我現在一直在盯着這一點,我無法理解它。 Anyhelp非常感謝,我爲一個普通的問題感到抱歉。

<?php 

define('DB_NAME', 'conference'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', 'password'); 
define('DB_HOST', 'localhost'); 

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
mysqli_set_charset($link, 'utf8'); 
if (!$link) { 
    die("Database connection failed: " . mysqli_error($link)); 
} 

//Use array to not repeat code 
$post_vars = array('fname', 'lname', 'eaddress', 'comment'); 
foreach($post_vars as $key) { 
    $$key = mysqli_real_escape_string($link, $_POST[$key]); 
    //For example now there is a variable $firstname that you can use 
} 

$sql = "INSERT INTO comments ('fname', 'lname', 'eaddress', 'comment') VALUES ('$fname', '$lname', '$eaddress', '$comment');"; 
$result = mysqli_query($link, $sql); 
mysqli_close($link); 
?> 
+0

PHP通知告訴你,你在foreach循環中使用的鍵不存在於$ _POST數組中。 –

+0

我不明白爲什麼。我有2個其他的PHP文件,喂2個其他表,具有相同的確切結構和沒有問題。 – Vortex11

+0

var_dump $ _POST來查看它的實際內容。 –

回答

1

請嘗試以下操作。你不需要'。另外請注意,「評論」是MySQL的關鍵字。

$sql = "INSERT INTO comments (fname, lname, eaddress, `comment`) VALUES ('$fname', '$lname', '$eaddress', '$comment');"; 

另外,如果$ _POST已設置,請先檢查。

+1

1.你不解釋*爲什麼這應該工作2.它並沒有真正解決他們的問題(但這是他們將面臨的另一個問題,一旦他們修復了未定義的問題) –

+0

是的,我編輯我的答案添加解釋因爲我不是英語母語的人,所以我總是要檢查拼寫。 –

+0

你的答案仍然沒有真正解決他們得到的錯誤。它只是指出了他們在代碼中存在的其他錯誤。 –