2015-05-19 68 views
-1

是新來PDO和是一個自由職業者,學習PHP這些是準備的語句是正確的

,最後經過一番研究,這裏是我的代碼

<?php 
define('DB_SERVER', "localhost"); 
define('DB_USER', "user"); 
define('DB_PASSWORD', "123456789"); 
define('DB_DATABASE', "test"); 
define('DB_DRIVER', "mysql"); 

$country = filter_input(INPUT_POST, 'country'); 
$capital = filter_input(INPUT_POST, 'capital'); 
$language = filter_input(INPUT_POST, 'language'); 

try { 
    $db = new PDO(DB_DRIVER . ":dbname=" . DB_DATABASE . ";host=" . DB_SERVER, DB_USER, DB_PASSWORD); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $stmt = $db->prepare("INSERT INTO countries(name, capital, language) VALUES (:country, :capital, :language)"); 

    $stmt->bindParam(':country', $country, PDO::PARAM_STR, 100); 
    $stmt->bindParam(':capital', $capital, PDO::PARAM_STR, 100); 
    $stmt->bindParam(':language', $language, PDO::PARAM_STR, 100); 

    if($stmt->execute()) { 
     echo '1 row has been inserted'; 
    } 

    $db = null; 
} catch(PDOException $e) { 
    trigger_error('Error occured while trying to insert into the DB:' . $e->getMessage(), E_USER_ERROR); 
} 

?> 

在這些語句上面的代碼正確 的準備聲明正確 因爲我遇到錯誤

Fatal error: Error occured while trying to insert into the DB:SQLSTATE[42S22]: Column not found: 1054 Champ 'name' inconnu dans field list in C:\Users\sanoj\Documents\NetBeansProjects\AA WYSIWYG\PDO prepared stament.php on line 28

+1

你試過了嗎?諸如「這是否工作?」等問題是無關緊要的。 –

+1

你是否收到任何錯誤,如果是,那麼它不工作隊友 –

+0

@Uchiha它不工作我得到這個錯誤'致命錯誤:嘗試插入到數據庫時出錯:SQLSTATE [42S22]:未找到列:1054冠軍的名字'inn_set(「display_errors」,1)'inn_set(「display_errors」,1)'在C:\ Users \ sanoj \ Documents \ NetBeansProjects \ AA WYSIWYG \ PDO中準備stament.php在線28' –

回答

2

(name, capital, language) VALUES (:country, :capital, :language)

錯誤很明顯,name列不存在。

Fatal error: Error occured while trying to insert into the DB:SQLSTATE[42S22]: Column not found: 1054 Champ 'name' inconnu dans field list in C:\Users\sanoj\Documents\NetBeansProjects\AA WYSIWYG\PDO prepared stament.php on line 28

您可能意味着使用country,看到第一個值是你的價值觀是什麼。

  • 驗證並仔細檢查表中的所有列名。
  • 只有你知道列名是什麼。

還要確保所有變量都能正確填充,表單使用的是post方法,並且所有元素都包含name屬性。

error reporting添加到您的文件的頂部,這將有助於發現錯誤。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

旁註:錯誤報告只應在分期完成,並且從不生產。

+0

這是我糾正,它的工作原理,上面的代碼是否正確準備聲明..?它會保護注射..? –

+0

@sanojlawrence是的,這是準備好的聲明如何工作,你應該很好去。您也可能想查找和研究XSS注射。 –

+0

謝謝Mr.Fred。 –