2014-04-01 52 views
0

我有一個函數,人們可以在數據庫中插入兩個文本字段。它插入空字段到在時刻數據庫在給我的這些錯誤現在:插入數據庫時​​未定義的索引

注意:未定義的變量:流行語在/Applications/XAMPP/xamppfiles/htdocs/modul8B/controllers/home.php線路17

注意:未定義的變量:行中/Applications/XAMPP/xamppfiles/htdocs/modul8B/controllers/home.php興趣17

說明:未定義變量:圖像/應用程序/ XAMPP/xamppfiles/htdocs中/ modul8B /控制器/ home.php在線17

以下是表格:

<?php 
include_once 'models/profile_table_class.php'; 

return" 
<div class='main-wrap'> 
    <div class='container'> 



     <div class='header'> 




      <form id='profile-form' method=post action='index.php?page=home' enctype='multipart/form-data'> 
       <h1> Your Profile </h1> 
        <textarea name='catchphrase' id='catchphrase'> 

        </textarea> 

        <textarea name='interest' id='about-you' > 

        </textarea> 

        <h3 class='upload-heading'>Upload Image:</h3> 
        <input type='file' name='image' id='file'> 

        <input id='profile-submit' type='submit' value='profile-submit'/> 
      </form> 

     </div> 
    </div>    
</div> 
"; 

下面是插入數據的腳本:

class Profile_Table { 
    private $db; 

    public function __construct($pdo) { 
     $this->db = $pdo; 
     ; 
    } 
    public function insertProfile($catchphrase, $interest, $image){ 
     $sql = "INSERT INTO profile (catchphrase, interest, image) Values ('".$catchphrase."', '".$interest."', '".$image."')"; 
     $statement = $this->db->prepare($sql); 
     $data = array ($catchphrase, $interest, $image); 
     $statement->execute ($data); 
     return $statement; 
    } 

這裏的地方錯誤是來自代碼:

include_once "models/profile_table_class.php"; 
    $profile = new Profile_Table($db); 


$profileIsSubmitted = isset($_POST['profile-submit']); 
if ($profileIsSubmitted) { 
    $catchphrase = $_POST ['catchphrase']; 
    $interest = $_POST ['interest']; 
    $image = $_POST ['image']; 

} try { 
     $profile->insertProfile($catchphrase, $interest, $image); 
    } catch (Exception $e) { 
     $errorDescription = $e; 
     echo $e; 
    } 

任何幫助表示讚賞。

+0

把db字段和表名反引號或單引號 –

+1

爲什麼'$ _POST ['?不知道這是否會導致錯誤。你可以做'var_dump($ _ POST);'只是爲了檢查你的值是否正確發送。 –

回答

1

將try catch置於if條件中。如果請求得到,你會有錯誤。

if ($profileIsSubmitted) { 
    $catchphrase = $_POST ['catchphrase']; // and remove space 
    $interest = $_POST ['interest'];// and remove space 
    $image = $_POST ['image'];// and remove space 

    try { 
     $profile->insertProfile($catchphrase, $interest, $image); 
    } catch (Exception $e) { 
     $errorDescription = $e; 
     echo $e; 
    } 
} 
+0

好的男人,未定義的索引現在被刪除,但表單仍然向數據庫發送空行。有任何想法嗎? – raqulka

+1

按照另一條評論建議,確保字段實際存在於'$ _POST'中。使用'var_dump'。 – Colandus

+1

另一點你的'圖像'是一個上傳的文件,使用['$ _FILES'](http://www.php.net/manual/en/reserved.variables.files.php)來代替。 – Debflav